第02篇:C#星夜拾遗之Windows窗体 拓荒者

尽管人们一直说高手都用编写控制台程序,尽管企业都在使用基于Web的应用程序,但我这里依然选择了从Windows窗体入门。原因很简单,我喜欢WinForm应用程序完美的可视化界面。

 

创建Windows窗体应用程序

根据上一篇中的WinForm版 Hello World的方法,创建一个名为SampleWinFormApp的Windows应用程序。这是最简单、明了的创建方式。也有一些高人通过Nodepad创建,并通过命令行编译执行的,这里不做说明,因为笔者没有那样做过。

在Form1的编辑窗口中,你可以拖拉工具箱中的项到窗口中,在公共控件栏目中的项为总常用的。你可以随意拖几个控件看看运行的效果,实践是检验真理的唯一方法,也是走向编程大门的不二法门。

 

说说Program.cs

双击打开Program.cs文件,会看到这个文件里面就一个Main方法,学习过C语言的都应该知道,Main方法就是程序的入口,这也不例外。Main方法中有三行代码,前两行貌似是设置窗口样式什么的,不做说明。第三行的用处在于设置运行时的窗口。这里是Form1,如果你的程序中有一个Form2,并且你希望程序运行后进入的界面是Form2,就可以将这里的Form1改为Form2即可。

另外,在Main方法中还可以加入一些系统初始化的内容,例如在这里初始化数据库连接对象、检验程序是否注册等。

 

说说Control类

Control类是每个控件和窗体的基类,它的核心功能是创建用户所见的界面。

Control类实现向用户显示信息的类所需的最基本功能。它处理用户通过键盘和指针设备所进行的输入。它还处理消息路由和安全。虽然它并不实现绘制,但是它定义控件的边界(其位置和大小)。它提供窗口句柄 (hWnd)……总之,这个Control类可谓功能强大。感兴趣的朋友可以参考MSDN,这里不多赘言。

 

窗口之间的参数传递示例下载:SampleWinFormApp.rar

既然要传递参数,自然要新建第二个窗口,右键项目>添加>Windows窗体,如下图:

在添加完成后,将Form1和Form2设计下图:

 

 

相信你已经明白这个示例要做的事情了吧,没错,就是对Form1中的名称进行重命名操作。操作流程为:点击“重命名”按钮,打开Form2,在Form2中显示并可修改Form1中的名称,修改完成后点击“确定”按钮,Form1中的名称也会更新。

首先,为窗口中的按钮添加单击事件,可以通过双击按钮本身,也可以在事件列表窗口中找到,并添加。这里的所有名称都采用默认值。

然后就是编程了。这里给出Form1 和Form2 的全部代码:

 

    public partial class Form1 : Form
    {
        
public Form1()
        {
            InitializeComponent();

            
this.textBox1.ReadOnly = true;  // 设置TextBox1只读
        }

        
private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 
= new Form2(this.textBox1.Text);
            
// 判断是否点击确定按钮
            if (form2.ShowDialog() == DialogResult.OK)
                
this.textBox1.Text = form2.GetNewName();
        }
    }

 

 

    public partial class Form2 : Form
    {
        
public Form2(string oldName)
        {
            InitializeComponent();

            
this.textBox1.Text = oldName;
        }

        
public string GetNewName()
        {
            
return this.textBox1.Text;
        }

        
private void button1_Click(object sender, EventArgs e)
        {
            
this.DialogResult = DialogResult.OK;
            
this.Close();
        }
    }

 

 

结束语

记得在刚学习C#窗体应用程序时,在参数传递这一部分浪费了很多时间,最后还是请教老师才搞明白的。其实这里是类的调用,没有面向对象编程基础的朋友可能不理解,在后面的章节中会进一步说明。

2021年9月 北京、西安两地,高薪诚聘 .NET工程师,请私信联系!
如果认为此文对您有帮助,别忘了支持一下哦!
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。转载时请在文章页面明显位置给出原文链接。
原文地址:https://www.cnblogs.com/youring2/p/1735697.html