首页 > 编程语言 >C#winform学习4(tab光标顺序、子窗口打开限制、提示框、定时器、状态栏用户时间、下拉显示、查询功能)

C#winform学习4(tab光标顺序、子窗口打开限制、提示框、定时器、状态栏用户时间、下拉显示、查询功能)

时间:2023-11-15 23:34:31浏览次数:37  
标签:状态栏 C# void private tab new mySqlConnection ds string

1.更改光标顺序

视图-->Tab键顺序

启动的时候,光标就会在用户名的文本框中,并且在按tab键的时候,光标就会按照我们定的顺序显示。即用户名文本框--tab-->密码文本框--tab-->登录--tab-->重置

 2.新建类

右键-->添加-->类

写入代码,封装字段生成属性,右键-->重构-->封装字段-->确认-->确认

 3.控制有些窗口只能打开一个

代码示例:

private void 员工列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //先判断当前窗口中有没有员工列表这个窗体
            //如果有则将其放到所有窗口的最前面,如果没有就打开窗体
            foreach(Form item in this.MdiChildren)
            {
                if(item.GetType().Name == "StaffForm")
                {
                    item.BringToFront();
                    return;
                }
            }
            //如果没有该窗体的情况:
            StaffForm staffForm = new StaffForm();
            staffForm.MdiParent = this;
            staffForm.Show();
        }

 4.关闭窗口的时候提示信息

在对应的窗口中找到这个然后双击

 

        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult dialogResult = MessageBox.Show("确定退出系统吗? ", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if(dialogResult == DialogResult.Yes)
            {
                Application.ExitThread();
            }
            else
            {
                //取消事件
                e.Cancel = true;
            }
        }

        private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //退出系统:this.Close()会继承上面的窗体关闭操作
            //提示框与MainForm_FormClosing里面的提示框内容相同
            this.Close(); 
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            //退出系统
            this.Close();
        }

 5.关闭所有子窗体

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            //关闭所有子窗体
            DialogResult dialogResult = MessageBox.Show("确定要关闭所有子窗体吗? ","系统提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
            if(dialogResult == DialogResult.Yes)
            {
                //激活状态的子窗体
                Form activeChild = this.ActiveMdiChild;
                while(activeChild != null)
                {
                    //关闭已打开的子窗体
                    activeChild.Close();
                    activeChild = this.ActiveMdiChild;
                }
            }
        }

 

6.定时器

 

 添加事件

private void timer1_Tick(object sender, EventArgs e)
        {
            DateTime dateTime = DateTime.Now;
            toolStripStatusLabel3.Text = dateTime.ToString("yyyy年MM月dd日 HH:mm:ss");
        }

 

7.窗体加载更新当前登录用户

private void MainForm_Load(object sender, EventArgs e)
        {
            toolStripStatusLabel2.Text = User.Uname;
        }

8.员工列表显示

private void StaffForm_Load(object sender, EventArgs e)
        {
            MySqlConnection mySqlConnection = new MySqlConnection("server=127.0.0.1;port=3306;user=root;password=123456;database=course");
            mySqlConnection.Open();
            string sql = string.Format("select sId as '编号',sCard as '工号',sName as '姓名',\r\nsSex as '性别',sAge as '年龄',sAddress as '地址',\r\ndeptName as '部门',sWages as '工资'\r\nfrom staffinfo s INNER JOIN deptinfo d on s.deptId = d.deptId;");
            MySqlDataAdapter msda = new MySqlDataAdapter(sql, mySqlConnection);
            DataSet ds = new DataSet();
            msda.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
            mySqlConnection.Close();
        }

9.下拉框显示

private void StaffForm_Load(object sender, EventArgs e)
        {
            //初始化
            setDataGridView();
            setComboBox();
        }
       /// <summary>
       /// 初始化ComboBox
       /// </summary>
        private void setComboBox()
        {
            MySqlConnection mySqlConnection = new MySqlConnection("server=127.0.0.1;port=3306;user=root;password=123456;database=course");
            mySqlConnection.Open();
            string sql = string.Format("select deptId,deptName from deptinfo");
            MySqlDataAdapter msda = new MySqlDataAdapter(sql, mySqlConnection);
            DataSet ds = new DataSet();
            msda.Fill(ds);

            //显示值
            comboBox1.DisplayMember = "deptName";
            //隐藏值
            comboBox1.ValueMember = "deptId";

            comboBox1.DataSource = ds.Tables[0];
            mySqlConnection.Close();
        }

效果:

 在下拉框默认显示请选择,需要在查询数据之后添加多一条数据

        private void StaffForm_Load(object sender, EventArgs e)
        {
            //初始化
            setDataGridView();
            setComboBox();
        }

       /// <summary>
       /// 初始化ComboBox
       /// </summary>
        private void setComboBox()
        {
            MySqlConnection mySqlConnection = new MySqlConnection("server=127.0.0.1;port=3306;user=root;password=123456;database=course");
            mySqlConnection.Open();
            string sql = string.Format("select deptId,deptName from deptinfo");
            MySqlDataAdapter msda = new MySqlDataAdapter(sql, mySqlConnection);
            DataSet ds = new DataSet();


            //msda.Fill(ds);
            msda.Fill(ds, "depts");
            //添加请选择
            DataRow dr = ds.Tables["depts"].NewRow();
            dr[0] = "0";
            dr[1] = "请选择";
            ds.Tables["depts"].Rows.InsertAt(dr, 0);


            //显示值
            comboBox1.DisplayMember = "deptName";
            //隐藏值
            comboBox1.ValueMember = "deptId";

            comboBox1.DataSource = ds.Tables["depts"];
            mySqlConnection.Close();
        }

 

效果:

10.员工列表添加多条件查询

private void StaffForm_Load(object sender, EventArgs e)
        {
            //初始化DataDridView列表数据
            setDataGridView();
            //初始化ComboBox下拉框
            setComboBox();
            //
        }

        /// <summary>
        /// 初始化DataGridView数据列表
        /// </summary>
        private void setDataGridView()
        {
            MySqlConnection mySqlConnection = new MySqlConnection("server=127.0.0.1;port=3306;user=root;password=123456;database=course");
            mySqlConnection.Open();
            //string sql = string.Format("select sId as '编号',sCard as '工号',sName as '姓名',\r\nsSex as '性别',sAge as '年龄',sAddress as '地址',\r\ndeptName as '部门',sWages as '工资'\r\nfrom staffinfo s INNER JOIN deptinfo d on s.deptId = d.deptId;");
            //条件查询
            string sql = string.Format("select sId as '编号',sCard as '工号',sName as '姓名',\r\nsSex as '性别',sAge as '年龄',sAddress as '地址',\r\ndeptName as '部门',sWages as '工资'\r\nfrom staffinfo s INNER JOIN deptinfo d on s.deptId = d.deptId where 1=1");
            if (textBox1.Text.Trim().Length !=0)
            {
                //注意最前面要写空格
                sql += string.Format(" and sCard like '%{0}%'", textBox1.Text.Trim());
            }
            if(textBox2.Text.Trim().Length !=0)
            {
                sql += string.Format(" and sName like '%{0}'", textBox2.Text.Trim());
            }
            if(comboBox1.SelectedIndex > 0)
            {
                sql += string.Format(" and deptName like '%{0}'", comboBox1.Text.Trim());
            }
            
            
            MySqlDataAdapter msda = new MySqlDataAdapter(sql, mySqlConnection);
            DataSet ds = new DataSet();
            msda.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
            mySqlConnection.Close();
        }
       /// <summary>
       /// 初始化ComboBox下拉框
       /// </summary>
        private void setComboBox()
        {
            MySqlConnection mySqlConnection = new MySqlConnection("server=127.0.0.1;port=3306;user=root;password=123456;database=course");
            mySqlConnection.Open();
            string sql = string.Format("select deptId,deptName from deptinfo");
            MySqlDataAdapter msda = new MySqlDataAdapter(sql, mySqlConnection);
            DataSet ds = new DataSet();


            //msda.Fill(ds);
            msda.Fill(ds, "depts");
            //添加请选择
            DataRow dr = ds.Tables["depts"].NewRow();
            dr[0] = "0";
            dr[1] = "请选择";
            ds.Tables["depts"].Rows.InsertAt(dr, 0);


            //显示值
            comboBox1.DisplayMember = "deptName";
            //隐藏值
            comboBox1.ValueMember = "deptId";

            comboBox1.DataSource = ds.Tables["depts"];
            mySqlConnection.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            setDataGridView();
        }

 

标签:状态栏,C#,void,private,tab,new,mySqlConnection,ds,string
From: https://www.cnblogs.com/hmy22466/p/17822393.html

相关文章

  • 八股文-TCP的三次握手
    TCP协议是一种面向连接、可靠传输的协议,而建立连接的过程就是著名的三次握手。这个过程保证了通信的双方能够同步信息,确保后续的数据传输是可靠和有序的。本文将深入解析TCP三次握手的步骤及其意义。漫画TCP的三次握手TCP连接的建立采用了三次握手的机制,确保通信双方都能够正常......
  • Java中的Comparator自定义排序
    需求:将指定数据中的数据,按照字母中包含的数字大小进行排序测试代码:publicstaticvoidmain(String[]args){List<String>list=newArrayList<>();list.add("QW34");list.add("QW21");list.add("QW12");list.add("QS34"......
  • Cocos Creator之MAC平台protobufjs
    一,环境MAC二,安装brew1,命令(不必要)/bin/zsh-c"$(curl-fsSLhttps://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"2,安装2.1,命令[email protected],安装位置/usr/local/lib/node_modules/protobufjs/dist三,准备一个proto测试文件(test.proto)packag......
  • 第十五天-登录验证&Cookie&Session&验证码安全
    1、后台验证-登录用户逻辑安全2、后台验证-COOKIE&SESSION3、后台验证-验证码&万能密码等登陆验证流程:1.发送登录请求:账号,密码2.接收账号密码3.判断账号密码准确性正确->成功登录,跳转页面失败->跳转到重新登录页面后台管理系统有多个文件页面,为了方便验证,一般会选用cook......
  • 在 Angular 中,Controller 之间通信的方式主要有三种:作用域继承仅限于上下级之间的通信
    AngularJS中control间通信最好使用什么方式?A回调B全局变量C广播D函数调用正确答案:C在Angular中,Controller之间通信的方式主要有三种:1)作用域继承。利用子Controller控制父Controller上的数据。2)注入服务。把需要共享的数据注册为一个service,在需要的Controlle......
  • [ARC160C] Power Up
    题目描述:给出一个大小为\(N\)的可重集\(A=\lbrace\A_1,A_2,\dots,A_N\\rbrace\)。你可以执行若干次如下操作(也可以不执行)。将两个\(x\)合并成一个\(x+1\)。输出最终可能的集合个数对\(998244353\)取模的结果。数据范围:\(1\leN\le2\times10^5\)\(1\leQ\le2......
  • setTimeout 是浏览器环境提供的,JS 标准没有规定。不是JavaScript的全局函数,是浏览器(宿
    下列哪些函数是JavaScript的全局函数?AencodeURIBparseFloatCsetTimeoutDeval正确答案:ABD答案:A、B、D个人记忆方法:6(编码相关)+2(数据处理)+4(数字相关)+1(特殊)编码相关:escape()、unescape()、encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent......
  • 因为offset和scroll其实都是“相对”来计算的。有其他元素做参照物,所以会回流一次,确保
    以下哪些操作会触发Reflow:varobj=document.getElementById(“test”);Aalert(obj.className)Balert(obj.offsetHeight)Cobj.style.height=“100px”Dobj.style.color=“red”正确答案:BC正确答案:BC。B计算了offsetHeight,C重新设置了高度。A打印出类名,无影响......
  • CentOS 8安装MySQL
    先看视频操作步骤更新系统。yum-yupdate获取Repository链接。a.前往mysqlyum下载官网b.找到对应Linux发行版本的Repository,然后单击Download。c.右键Nothanks,juststartmydownload.,复制链接。下载MySQLYumRepository。wgethttps://dev.mysql.co......
  • class的声明特征跟const和let类似,都是作用于块级作用域,都有暂时性死区, 预处理阶段则
    依据以下JS代码,在位置A打印变量a与在位置B打印变量a各会有怎样的输出?vara=1;functiontest(){//位置Aclassa{}//位置B}test();A1、classa{}B报错、classa{}C报错、报错D1、报错正确答案:Bclass的声明特征跟const和let类似,都是作用于块级作用域......