• Winfrom动态创建控件


    FlowLayoutPanel flowLayoutPanel1 = new FlowLayoutPanel();
    for (int i = 0; i < 9; i++)
    {
        Button btn = new Button();
        btn.Height = 100;
        btn.Width = 100;
        btn.Cursor = Cursors.Hand;  
        btn.Name = btn.Text = "button" + (i + 1);

        flowLayoutPanel1.Dock = DockStyle.Left;
        flowLayoutPanel1.Width = 330;
        flowLayoutPanel1.Controls.Add(btn);
    }
    this.Controls.Add(flowLayoutPanel1);  

    FlowLayoutPanel flowLayoutPanel1 = new FlowLayoutPanel();//为什么要添加这样一个控件?
    FlowLayoutPanel是一个用于自动排列控件的panel,它会自动的排列在它里面的控件,默认是从左到右,从上到下,用这个控件,就是为了方便不用自己写代码控制button的位置

    flowLayoutPanel1.Dock = DockStyle.Left;//这个又是什么意思啊?
    这句是让FlowLayoutPanel控件停靠在主窗体上,停靠的方式并不是占满整个主窗体,而是靠左,也就是左边固定在窗体的最左边,右边的大小自己控制,为什么不全屏停靠是因为,这个控件无法让在它里面的控件自动换行,如果窗体很大,那一排就会自动放上多于3个button,所以需要手动设置FlowLayoutPanel的宽度,让它一排只能装下3个button,第4个就自动换到下一行了

    this.Controls.Add(flowLayoutPanel1);//为什么要使用这个添加?
    这句是将FlowLayoutPanel控件放到窗体中,动态创建的FlowLayoutPanel控件一开始并没有放到窗体中
    就像动态创建的button,一开始并没有放到FlowLayoutPanel控件中一样,需要flowLayoutPanel1.Controls.Add(btn)把button放到FlowLayoutPanel中一样

    事件的方法很简单,但事件有很多种,每一种的代码稍有点区别,你可以使用一个简便的方法,就是你先用静态的方式,就是弄一个button在设计器上,在事件窗口中双击创建一个事件,然后去Designer中找到自动添加的这行代码,然后复制到程序中,然后把界面还原回来。
    如button的点击事件
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 控件名(也就是控件的Name,不是Text).Click += new System.EventHandler(响应事件的方法名)
    然后就是创建响应方法,方法名要与注册事件时写的方法名一样
    private void button1_Click(object sender, EventArgs e)
    {
    }
    取消事件,跟注册事件一样,只是把+=换成-=
    this.button1.Click -= new System.EventHandler(this.button1_Click);
    程序执行过这一行代码后,就不会再响应点击事件了

    像上面的动态的添加9个button的例子,你需要在for里面添加代码,不过要写在btn.Name = btn.Text = "button" + (i + 1);后面,因为要先赋了控件名以后,再添加事件
    btn.Name.Click += new System.EventHandler(this.button1_Click);
    这样9个button的点击都会进入到private void button1_Click(object sender, EventArgs e)这个方法 

  • 相关阅读:
    Linux平台不同解压缩命令的使用方法
    poj 1274 The Perfact Stall
    Experience Design for Sexable Forum
    JavaScript中的Array对象方法调用
    iOS9适配小结
    [Servlet&amp;JSP] HttpSession会话管理
    Android中的跨进程通信方法实例及特点分析(一):AIDL Service
    OpenCV——PS滤镜算法之Spherize 球面化(凸出效果)
    《Effective Modern C++》翻译--条款4:了解怎样查看推导出的类型
    Android开发系列之ListView
  • 原文地址:https://www.cnblogs.com/frustrate2/p/3412545.html
Copyright © 2020-2023  润新知