• 第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工程师,请私信联系!
    如果认为此文对您有帮助,别忘了支持一下哦!
    声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。转载时请在文章页面明显位置给出原文链接。
  • 相关阅读:
    Python学习 之 文件
    Python学习 之 对内存的使用(浅拷贝和深拷贝)
    Python学习 之 爬虫
    Python学习 之 正则表达式
    为何现在的网页广告都是有关你搜索或者购买过的商品 2015-08-22 22:06 1534人阅读 评论(35) 收藏
    Junit使用注意点
    用递归方式在JSON中查找对象
    利用StringBuffer来替换内容
    使用ant时 出现 java.lang.OutOfMemoryErro r: Java heap space的解决办法
    python-re使用举例
  • 原文地址:https://www.cnblogs.com/youring2/p/1735697.html
Copyright © 2020-2023  润新知