c# winform 创建日志登录界面

一.创建一个用于登录的Login的复合控件

1.右击项目文件,点击添加用户控件,设置为控件名为Login。

2.拉动两个lable控件,两个textBox控件,一个button,一个CheckBox控件。

3.将控件的权限(Modifiers)设置为Public。

二.将控件CheckBox与textBox2(显示密码的textBox)的控件绑定点击事件。

cs 复制代码
 private void checkBox1_CheckedChanged(object sender, EventArgs e)
 {
     if (checkBox1.Checked) 
     {
      textBox2.PasswordChar = '\0';
     }
     else { textBox2.PasswordChar = '*'; }
 }

三.重新生成项目,点击工具箱打开,打开自定义控件Login拖入到Form1中,添加listBox控件。

四.为Login的button控件添加自定义的点击事件。(注意设置Login中的button控件权限为公开)

五.给Form1窗口添加ContextMenuStrip菜单栏,里面设置一个删除的选项

六.为listBox添加点击事件

cs 复制代码
   private void listBox1_MouseDown(object sender, MouseEventArgs e)
   {
      
       if (e.Button == MouseButtons.Right)
       {
           if (listBox1.SelectedItems.Count != 0)
           {
               删除ToolStripMenuItem.Enabled = true;
           }
           else
           {
               删除ToolStripMenuItem.Enabled = false;
           }
           this.contextMenuStrip1.Show(listBox1, e.Location);

       }

   }

七.为删除按钮添加点击事件

cs 复制代码
  private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
  {
      listBox1.Items.Remove(listBox1.SelectedItem);
      string str = JsonConvert.SerializeObject(listBox1.Items, Formatting.Indented);
      File.WriteAllText("登陆日志.txt", str);
      listBox1.ClearSelected();
  }

八.总代码

cs 复制代码
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;


namespace winform对json数据的存储和读取
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            login1.button1.Click += new EventHandler (this.A);
        }

      
        private void A(object sender, EventArgs e) 
        {
            if (login1.textBox1.Text != "" && login1.textBox2.Text != "") 
            {
               listBox1.Items.Add(DateTime.Now.ToString("yyyy-MM-dd  HH:mm:ss  ") + login1.textBox1.Text+"登陆了此页面");
                string str = JsonConvert.SerializeObject(listBox1.Items, Formatting.Indented);
                File.WriteAllText("登陆日志.txt",str);
            }
            else { MessageBox.Show("账号密码不能为空"); }
        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            listBox1.Items.Remove(listBox1.SelectedItem);
            string str = JsonConvert.SerializeObject(listBox1.Items, Formatting.Indented);
            File.WriteAllText("登陆日志.txt", str);
            listBox1.ClearSelected();
        }

      

        private void listBox1_MouseDown(object sender, MouseEventArgs e)
        {
           
            if (e.Button == MouseButtons.Right)
            {
                if (listBox1.SelectedItems.Count != 0)
                {
                    删除ToolStripMenuItem.Enabled = true;
                }
                else
                {
                    删除ToolStripMenuItem.Enabled = false;
                }
                this.contextMenuStrip1.Show(listBox1, e.Location);

            }

        }

       
    }
}
相关推荐
兰令水几秒前
hot100【acm版】【2026.7.11/12打卡-java版本】
java·开发语言·数据结构·算法·职场和发展
从零开始的代码生活_11 分钟前
C++ string 详解:常用接口、字符串算法与深拷贝实现
开发语言·c++·后端·学习·算法
m0_738120721 小时前
PHP代码审计基础——面向对象(四)
android·开发语言·网络·安全·github·php
2601_963771371 小时前
10 Best PHP Media CMS and Scripts for Web Creators in 2026
开发语言·前端·php
阿里嘎多学长1 小时前
2026-07-09 GitHub 热点项目精选
开发语言·程序员·github·代码托管
带娃的IT创业者1 小时前
监控并非安全:当隐私成为技术的祭品
java·开发语言·安全·数据安全·监控·隐私保护·加密技术
玖玥拾2 小时前
C# 语言进阶(十四)Unity UI界面开发 + 网络消息联动
服务器·开发语言·网络·ui·unity·c#·游戏引擎
aaPIXa6222 小时前
C++ 质量前置检查:clang-format 与 clang-tidy 实践指南
开发语言·c++
余额瞒着我当琳2 小时前
C++ 基础核心概念精讲:引用、内联与 nullptr
java·开发语言·c++
名字还没想好☜2 小时前
Go 内存逃逸分析:什么时候变量跑到堆上
开发语言·算法·性能优化·golang·go·内存逃逸