随笔 - 352  文章 - 0  评论 - 3  阅读 - 63373

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

 

 

posted on   201812  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2022-11-07 《代码大全》笔记第七篇
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示