C# WinForm控件和定时器

张开发
2026/4/3 12:23:44 15 分钟阅读
C# WinForm控件和定时器
一、Labellabel常用的属性label常用的属性AutoSize:内容自适应 默认true如果不想自适应可以改成falseText:显示文本的BackColor:背景颜色TextAlign:文本对齐方式ForeColor:字体颜色Visible: 是否可见Font:字体字体大小 字体类型、加粗、倾斜Name: 代码访问界面控件时候通过Name访问获取label的标题 Console.WriteLine(this.label1.Text);弹出提示框MessageBox.Show(label1.Text);二、TextBoxTextBox 常用的常属性MulitiLine: 是否支持多行 默认不支持多行UseSystemPasswordChar 是否使用默认加密的字符Text 文本内容PasswordChar 加密的字符TextAlign: 文本对齐方式三、ButtonButton 常用属性1 UseWaitCursor: 是否使用等待鼠标类型2 backgroundImage: 背景图3 backgroundImagelayout: 背景图分布方式,tile: 如果图片过小生成多张图片 stretch拉伸图片以适应控件大小 zoom按照图像原比例进行缩放图片4 TextAlign: 对齐方式5 Dock 控件的停靠方式 设置处于父控件的哪个方向 top:处于父控件上面事件: 触发函数的行为例如在点击的时候调用一个函数 需要给按钮绑定一个点击事件事件也有很多种类鼠标的点击事件、输入框textbox的TextChanged文本输入事件。键盘事件等按钮的点击事件1直接点击窗体上按钮 2按钮界面闪电标识符号找到对应事件名 点击生成一个事件private void button1_Click(object sender, EventArgs e) { //textBox1.Text; 输入框文本内容 // label2.Text label2的文本 label2.Text textBox1.Text; }四、事件多播事件多播:可以对一个控件通过使用 或者-进行添加事件或者删除事件绑定事件也可以代码进行事件绑定button1 绑定button3_Click方法 button3也是绑定button3_Click方法 事件函数sender就是可变的声明this.button1.Click button3_Click; this.button2.Click new System.EventHandler(button3_Click); // button2绑定了button3_Click方法按钮3的绑定事件private void button3_Click(object sender, EventArgs e) { //参数1 object sender代表当前点击的对象 例如目前sender就是button3一般使用sender必须强制转换指定控件类型 //参数2 EventArgs e 事件对象包含当前事件的一些信息 Button b1 (Button)sender; //第二种方法获取标题 MessageBox.Show(b1.Text e.ToString()); //第一种: 获取当前点击按钮的标题 //MessageBox.Show(button3.Text); }添加事件private void button4_Click(object sender, EventArgs e) { this.button1.Click button6_Click; // 给按钮1绑定一个 button6_Click的方法 }移除事件private void button5_Click(object sender, EventArgs e) { this.button1.Click - button6_Click; // 给按钮1移除一个 button6_Click的方法 }点击弹窗的功能private void button6_Click(object sender, EventArgs e) { MessageBox.Show(弹窗效果); }五、pictureBox加载网络图片this.pictureBox1.Load(图片网址);//可以加载网络图片切换图片的按钮方法int count 1; //切换图片的按钮方法 private void button1_Click(object sender, EventArgs e) { count; //Image.FromFile 加载图片 //C:\\Users\\Administrator\\Desktop\\pic\\2.png //this.pictureBox1.Image Image.FromFile(C:\\Users\\Administrator\\Desktop\\pic\\ count .png); this.pictureBox1.Image Image.FromFile($C:\\Users\\Administrator\\Desktop\\pic\\{count}.png); if (count5) { count 0; } }六、Panel控件//切换到panel2 private void button2_Click(object sender, EventArgs e) { //让panel1隐藏 panel2显示 //this.panel1.Visible false; //Visible 控制控件是否可见 fasle不可见 true可见 //this.panel2.Visible true; this.panel2.BringToFront(); //把panel2带到前面 this.panel1.SendToBack();// 把panel放到最后面 } //切换到panel1 private void button1_Click(object sender, EventArgs e) { //this.panel1.Visible true; //Visible 控制控件是否可见 fasle不可见 true可见 //this.panel2.Visible false; this.panel1.BringToFront(); // this.panel2.SendToBack();// }七、代码创建控件this.Text hello; 窗体的标题属性创建Button控件1 创建1个button对象 Button btn1 new Button(); //2设置按钮的属性和样式 btn1.BackColor Color.Red;// 背景颜色 btn1.Text 登录; //按钮标题 btn1.ForeColor Color.Green;//字体颜色 FontFamily f1 new FontFamily(黑体); //创建一个楷体字体 btn1.Font new Font(f1, 20, FontStyle.Bold); //设置字体楷体、字号20 加粗字体 btn1.Size new Size(200, 100); //设置大小 btn1.Location new Point(0, 0);//修改位置 this.DoubleClick Btn1_DoubleClick;//给this窗体添加双击事件 btn1.Image Image.FromFile(1.png); //添加图标 btn1.ImageAlign ContentAlignment.MiddleLeft;// 设置图标对齐方式 //3 添加到指定控件 // this当前窗体对象 包含了窗体的图标属性 窗体的标题属性 Controls窗体所有控件对象 this.Controls.Add(btn1);创建10个Panel 每个panel显示图片和labelfor (int i 0; i 10; i) { Panel p1 new Panel(); // p1.BackColor Color.Red; p1.Size new Size(100, 200);//设置panel的大下 宽100 高200 p1.Location new Point(110*i20, 0); p1.BorderStyle BorderStyle.FixedSingle;//设置边框 //添加图片到Panel上 PictureBox pb new PictureBox(); pb.Image Image.FromFile(12.png); pb.Size new Size(80,80); pb.SizeMode PictureBoxSizeMode.StretchImage;//拉伸图片 pb.Left 8; //设置子控件左边的距离 距离父控件的左边距离 p1.Controls.Add(pb);// 添加控件到panel Label l1 new Label(); l1.Text 哈喽; // l1.Left 8; //设置子控件左边的距离 距离父控件的左边距离 l1.Location new Point(20, 120); p1.Controls.Add(l1); this.Controls.Add(p1);//窗体上添加panel }八、定时器一、DataGridView首先将控件添加到窗体代码写一个对象用来生成表格public class Student { public string Name { get; set; } public int Age { get; set; } public string Info { get; set; } } public ListStudent list new ListStudent(); list.Add(new Student() { Name 张三1, Age 10, Info 委内瑞拉总统被捕 }); list.Add(new Student() { Name 张三2, Age 20, Info 委内瑞拉总统被捕 }); list.Add(new Student() { Name 张三3, Age 30, Info 委内瑞拉总统被捕 });两个重要代码//AutoGenerateColumns是否自动生成列设置为false 需要自己通过界面绑定类的属性自己设置列的标题、自己设置列显示哪个属性 //设置为true表格自动显示列的标题为绑定类的属性 dataGridView1.AutoGenerateColumns false; //dataGridView1 表格 可以通过DataSource属性进行绑定数据源但是后续添加的新的数据不会立即显示到控件上需要 // 再次对 dataGridView1.DataSourcenull之后 再重新赋值 dataGridView1.DataSource list;在属性添加列名达到上图效果选择数据源数据源是生成对象的属性。增删改查现在用Button写一个增删改查的效果//添加数据源的方法 private void button1_Click(object sender, EventArgs e) { list.Add(new Student() { Name 张三4, Age 40, Info 委内瑞拉总统被捕 }); dataGridView1.DataSource null; dataGridView1.DataSource list; } //删除数据源的方法 private void button2_Click(object sender, EventArgs e) { //先判断是否选中行 //SelectedRows 选中的行 可以选择多个 if (dataGridView1.SelectedRows.Count0) //没选中行 { MessageBox.Show(请先选中要删除的一行); return; } //选中行了 获取选中的一行索引值 或者这一行对象 Student stu null; //要删除的一行对象 // DataBoundItem 获取选中行绑定对象 // as 强制转换成Student对象 stu dataGridView1.SelectedRows[0].DataBoundItem as Student; //MessageBox.Show(stu.Name); //MessageBox.Show是有返回值的为DialogResult对象对话结果对象 DialogResult result MessageBox.Show(是否要删除改行, 温馨提示, MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result ! DialogResult.Yes) //如果没有选择yes 直接return { return; } //如果选择警告框的Yes键时候 再删除 list.Remove(stu); //刷新界面 dataGridView1.DataSource null; dataGridView1.DataSource list; //删除成功之后 可以再次提示一下 MessageBox.Show(删除成功); } //查询数据源 把满足查询条件的数据源重新绑定给表格 private void button3_Click(object sender, EventArgs e) { //FindAll() 查找满足条件的所有的元素对象 与输入框文本内容一样的对象 ListStudent currentList list.FindAll(v v.Name textBox1.Text); if (currentList.Count0) { MessageBox.Show(没找到要找的学生); return; } dataGridView1.DataSource null; dataGridView1.DataSource currentList; } //修改数据源 private void button4_Click(object sender, EventArgs e) { if (dataGridView1.SelectedRows.Count 0) { MessageBox.Show(请先选中要修改的一行); return; } // 获取选中一行的对象 DataGridViewRow cc dataGridView1.SelectedRows[0]; Student stu cc.DataBoundItem as Student; stu.Name 高达; stu.Age 20; stu.Info 人在搭在; dataGridView1.DataSource null; dataGridView1.DataSource list; // 获取单元格的内容 // Cells[Name1] 获取name属性为Name1单元格的内容 // MessageBox.Show(dataGridView1.SelectedRows[0].Cells[Name1].Value.ToString()); // DataGridViewRow cc1 dataGridView1.SelectedRows[0]; // MessageBox.Show(cc1.Cells[Name1].Value.ToString()); } //当行重新绘制的时候触发函数二、WinForm定时器Timer控件名称Timer在窗体中是不显示定时器的必要设置this.timer1.Stop();// 关闭定时器 this.timer1.Start();//开启定时器 this.timer1.Enabled true; //设置定时器为激活状态的 this.timer1.Interval 10;//触发定时器函数时间间隔 ms为单位12和3是同效果写一个就行也可以将定时器写到Button中按钮控制定时器开启或关闭{ this.timer1.Start(); //开启定时器 } private void stopTimer_Click(object sender, EventArgs e) { this.timer1.Stop();// 关闭定时器 }现在写一个1秒改变文本颜色并且文本向下移动Random ran new Random();//随机数对象 int count 0; //定时器事件 private void timer1_Tick(object sender, EventArgs e) { count; //MessageBox.Show(定时器事件) ; //Color.FromArgb(255, 255, 255) 通过三原色取值合成一个颜色 //三个值分别为红绿蓝 值的范围0-255哪个值越大越接近该颜色255,255,255 白色0,0,0 黑色 int r ran.Next(256); int g ran.Next(256); int b ran.Next(256); label1.BackColor Color.FromArgb(r, g, b); //label1.Left label的左边的距离 label1.Location new Point(label1.Left, count); if (count400) { count 0; } }

更多文章