C#winform学习1
Form1.cs:业务代码
自动方式:Form1.Designer.cs:界面代码,一般是设计器自动生成的(最好不要修改该文件)
手动方式:在Form1.cs中手动方式添加事件处理
vs studio会有代码提示,直接按TAB键即可代码补全
1.窗口自适应
1.将textbox的自适应关闭
2.重写OnLayout方法
protected override void OnLayout(LayoutEventArgs levent) { //1.调用父类的OnLayout() base.OnLayout(levent); //2.获取窗口大小 ClientSize //Size是窗口的总大小,包括标题栏和边框 //ClientSize仅是窗口客户区的大小 int w = this.ClientSize.Width; int h = this.ClientSize.Height; //3.计算每一个控件的位置和大小 int yoff = 0; yoff = 4; this.textBox1.Location = new Point(0, yoff); this.textBox1.Size = new Size(w - 80, 30);//80:按钮大小 this.button1.Location = new Point(w - 80, yoff); this.button1.Size = new Size(80, 30); yoff += 30; //第一行的高度 yoff += 4; //间隔 this.pictureBox1.Location = new Point(0, yoff); this.pictureBox1.Size = new Size(w, h - yoff - 4); }
2.Anchor(锚定)
当窗口大小改变的时候,该控件锚定在窗口的左上角 (与父窗口的Top和Left保持不变)
3.Dock(停靠)
添加容器panel进行嵌套布局,会自适应窗口大小
设置Dock属性时,Anchor属性无效
问题:最终停靠效果取决于添加控件的顺序
4.自定义布局器的使用步骤:
1.工具-->选项,Windows窗体设计器-->常规,将自动填充工具箱设置True
2.添加自定义的Panel或Control类(将自定义的布局器类拷贝到项目中)
3.点击生成解决方案
4.重新打开Form1.cs,在工具箱中可以看见自定义的控件
5.练习:点击复选框按钮的时候,密码框明文显示,默认是密文显示:Click和CheckedChanged事件
Click事件和CheckedChanged事件区别:
Click事件:用户手动点击
CheckedChanged事件:状态值改变就会触发,可以是用户点击,也可以是程序代码改变这个值
Form1.cs中写入改代码
private void checkBox1_CheckedChanged(object sender, EventArgs e) { //1.获取当前复选框的状态 bool isChecked = checkBox1.Checked; if (isChecked) { //设置明文显示 textBox1.PasswordChar = '\0'; } else { textBox1.PasswordChar = '*'; } }
6.下拉框comboBox
在设计器中直接编辑:属性-->数据-->Items
构造方法手动添加:comboBox1.Items.Add("xxx");
获取选中的索引(未选中则未-1):
int index = comboBox1.SelectedIndex;
获取选中的值:
String sel = (String)comboBox1.SelectedItem;
7.列表框listBox
列表数据项的类型可以是任意的
单选模式:
返回选中索引:listBox1.SelectedIndex
返回选中值:listBox1.SelectedItem
多选模式:
返回选中索引:listBox1.SelectedIndices
返回选中值:listBox1.SelectedItems
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2022-11-07 《代码大全》笔记第七篇