winform动态生成窗体,显示动态数据

一个吃瓜群众 2014-11-07 11:14:13
winform在主窗体上有多个按钮,每个按钮点击后都显示一个相同的窗体,这个窗体上控件相同,只是实时显示的数据不同。
求助!这个要如何实现?
...全文
636 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Donniezhu 2015-05-23
  • 打赏
  • 举报
回复
上面有些方法也太麻烦了吧!简单点不行吗? 所有的按钮都执行同一个点击事件,每个按钮的Tag属性存放不同的参数。 当点击按钮后获得当前按钮的tag属性,根据不同的tag值,赋不同的值。
yzrong520 2015-05-23
  • 打赏
  • 举报
回复
我也想搞这个。。。。
把分全给哥 2015-05-23
  • 打赏
  • 举报
回复

//窗体1
        public Form1()
        {
            InitializeComponent();
            getDynamicButton(3);
        }

        public void getDynamicButton(int number)
        {
            for (int i=1;i<=number;i++)
            {
                Button btn = new Button();
                btn.Name = "btn" + i.ToString();
                btn.Text = "btn" + i.ToString();
                btn.Tag = i;
                btn.Click += new EventHandler(button_Click);
                this.tableLayoutPanel1.Controls.Add(btn);
            }
        }

        private void button_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2(sender,e);
            frm2.ShowDialog();
        }

//窗体2
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(object sender, EventArgs e)
        {
            InitializeComponent();
            Button button = sender as Button;
            label1.Text = "你点击的按钮是"+button.Text.ToString() ;
        }
这是窗体传递对象,根据需要编辑对象
把分全给哥 2015-05-23
  • 打赏
  • 举报
回复
引用 2 楼 wangyucai0915 的回复:

/*生成Button的代码*/
for(var i=0; i<10; i++){
    Button dynamicBtn = new Button();
    dynamicBtn.Text = string.Format("这是第{0}个按钮", i);
    dynamicBtn.Tag = i;
    dynamicBtn.Click += new EventHandler(DynamicButtonClick);
    Panel1.Controls.Add(dynamicBtn)
}

/*事件处理函数*/

private void DynamicButtonClick(object sender, EventArgs e){
    Button currentBtn = sender as Button;
    MessageBox.Show(currentBtn.Tag.ToString(), "按钮编号");
}
不知道你说的数据指的是什么,你可以传递一个sender对象,根据需要得到你要的数据
一个吃瓜群众 2014-11-13
  • 打赏
  • 举报
回复
可能是我没有表述清楚 假设:主窗体上有10个按钮,每个按钮TAG分别是1到10;按钮都打开模版子窗体A,窗体A中用串口收发数据。 当前,窗体之间的数据有干扰。 要怎么解决,需不需要用线程?
zzyhost 2014-11-07
  • 打赏
  • 举报
回复
构造函数传参啊
我现在在路上 2014-11-07
  • 打赏
  • 举报
回复
new 窗体的时候把特有的数据传过去,进行显示不就行了
sunny906 2014-11-07
  • 打赏
  • 举报
回复
Form2:

        public void ShowText(string text)
        {
            textBox1.Text = text;
        }
sunny906 2014-11-07
  • 打赏
  • 举报
回复
Form1

        Form2 _form=null;
        private void button1_Click(object sender, EventArgs e)
        {
            OpenForm("aa");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            OpenForm("bb");
        }

        private void OpenForm(string text)
        {
            if (_form == null)
            {
                _form = new Form2();
                _form.Show();
            }
            _form.ShowText(text);
        }
於黾 2014-11-07
  • 打赏
  • 举报
回复
在窗体里定义一个public int类型的变量 new完窗体,把索引传递进去 然后show 然后窗体里timer中通过索引去全局数组里找自己要显示的数据更新控件的值
一个吃瓜群众 2014-11-07
  • 打赏
  • 举报
回复
引用 5 楼 u011573693 的回复:
定义一个模板UserControl(用户控件) 布局你上面所描述的,然后做为from的数据模板。 数据的显示分为两种: 1. 数据结构模板相同,但是数据内容不同,这种情况,使用一个类,管理数据字段,然后在需要时候new,赋值最后传给你需要显示的UserControl 2.数据结构模板不同情况,这种只能写多个类,然后通过一个数据管理器,实现数据模板跟usercontrol的匹配了。 这种一种最简单的实现思路了
谢谢
1987andy 2014-11-07
  • 打赏
  • 举报
回复
定义一个模板UserControl(用户控件) 布局你上面所描述的,然后做为from的数据模板。 数据的显示分为两种: 1. 数据结构模板相同,但是数据内容不同,这种情况,使用一个类,管理数据字段,然后在需要时候new,赋值最后传给你需要显示的UserControl 2.数据结构模板不同情况,这种只能写多个类,然后通过一个数据管理器,实现数据模板跟usercontrol的匹配了。 这种一种最简单的实现思路了
卧_槽 2014-11-07
  • 打赏
  • 举报
回复
啥都不会,没法交流啊。
xdashewan 2014-11-07
  • 打赏
  • 举报
回复

Form1 frm1 = new Form1();
Form1 frm2 = new Form1();
frm1.Show();
frm2.Show();
打不开吗?没人规定一个form只能使用一次吧
一个吃瓜群众 2014-11-07
  • 打赏
  • 举报
回复
引用 1 楼 xdashewan 的回复:
打开n个窗体,每个窗体得到的数据不同而已,难点在哪里
就是有个模版窗体,想要点击按钮的时候显示这个模版窗体,每个按钮点击显示各自的窗体,这N个窗体可以同时打开。 怎么解决啊?会者不难,难者不会啊。
xdashewan 2014-11-07
  • 打赏
  • 举报
回复
打开n个窗体,每个窗体得到的数据不同而已,难点在哪里

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧