weixin_45798855
2020-04-13 12:18
采纳率: 0%
浏览 503

C# WinForm 自定义控件,怎样在设计时动态增加按钮并在设计时点击响应函数?

现在想开发一个导航菜单,思路为:
1、自定义控件增加智能标签;
2、智能标签中增加新增菜单组的命令;
3、使用时,自定义控件拖到设计窗口中,点击增加菜单组后自动生成一个按钮和一个Panel;
4、自动生成的按钮,可以在设计时点击响应函数,对生成的面板隐藏或展开。

目前遇到的情况:
1、在设计时生成按钮后,调用自定义控件中的创造按钮函数,可以生成按钮,并能点击响应相应的函数。
2、但在主程序运行时,设计时生成的按钮根本就没有。
3、创建按钮的函数代码如下:
Button btn = new Button();
btn.Text = "SSS";
btn.Dock = DockStyle.Top;
this.Controls.Add(btn);
4、在代码中加入:
this.Container.Add(btn)可以在运行时显示增加的按钮,但在设计时,按钮没有动作,应用到窗口时,也需要重写响应函数。

本人C#新手一枚,请各位大侠指点一下,有什么办法能够让代码生成的按钮,在设计时和运行时都能显示按钮,并在两种情况下都响应设定好的响应函数?谢谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • ArthurKe 2020-04-14 10:52

    动态生成的物件要在运行时才能看到

     private void Form1_Load(object sender, EventArgs e)
            {
                //产生一个button
                Button btn = new Button();
                //
                btn.Text = " test ";
                //设定物件名称
                btn.Name = " Button1";
                btn.BackColor = Color.White;
    
                //将 button 加入 panel 中
                panel_UIPanel.Controls.Add(btn);
                //设定位置
                btn.Left = (panel_UIPanel.Width / 2) - btn.Width/2;
                btn.Top = (panel_UIPanel.Height / 2) - btn.Height / 2;
                //设定位置2
                //btn.Location = new Point(100, 100);
                //点击时执行响应函数 dynamic_Btn_Click
                btn.Click += dynamic_Btn_Click;
    
            }
    
            private void dynamic_Btn_Click(object sender, EventArgs e)
            {
                MessageBox.Show("Button click");
            }
    
    打赏 评论

相关推荐 更多相似问题