c#中保存整个窗体,为每个按钮加事件:详细解说看补充。谢谢了。80分希望能找到解答,感兴趣的互相学习
1:保存整个窗体:我的窗体中有一个按钮,点击这个个按钮时在窗体中的flowLayoutPanel中添加一个新的按钮。如何在点保存按钮或者关闭窗体时实现保存那个多出来的按钮...
1:保存整个窗体:我的窗体中有一个按钮,点击这个个按钮时在窗体中的flowLayoutPanel中添加一个新的按钮。如何在点保存按钮或者关闭窗体时实现保存那个多出来的按钮。在下次打开时在flowLayoutPanel中依然存在那个按钮及按钮的相应事件代码;
2:为每个按钮加事件:也是点击按钮两次便在flowLayoutPanel中生成两个按钮如何设置二个按钮的不同单击事件(注:在flowLayoutPanel1中的两个按钮只在单击了窗体中的那个按钮才会产生)
3:单击窗体中的按钮产生新按钮的代码及事件代码,但是产生的按钮只能定义一次单击事件,希望高手能给出解答谢谢了。
代码:
private void button5_Click(object sender, EventArgs e)
{Button but = new Button();
but.Click += new EventHandler(butClick);
this.flowLayoutPanel1.Controls.Add(but);}
void butClick(object sender, EventArgs e)
{
} 展开
2:为每个按钮加事件:也是点击按钮两次便在flowLayoutPanel中生成两个按钮如何设置二个按钮的不同单击事件(注:在flowLayoutPanel1中的两个按钮只在单击了窗体中的那个按钮才会产生)
3:单击窗体中的按钮产生新按钮的代码及事件代码,但是产生的按钮只能定义一次单击事件,希望高手能给出解答谢谢了。
代码:
private void button5_Click(object sender, EventArgs e)
{Button but = new Button();
but.Click += new EventHandler(butClick);
this.flowLayoutPanel1.Controls.Add(but);}
void butClick(object sender, EventArgs e)
{
} 展开
展开全部
1:利用配置文件保存窗体的新加信息。每次打开窗体时先检查配置文件,读出按键信息并加到页面上;每新加按钮时,同时将对应按钮信息添加到配置文件。注:按钮信息包含名称、位置坐标、响应事件等(你的例子好像只要个数就够了)。
2:可以让所有的按钮都响应同一个单击事件(如你的butClick),只是在单击事件处理过程中根据不同的按钮执行不同的操作,可以通过控件的Tag属性传递相关信息。如string strCmd=(string)(sender as ButtonBox).Tag;这里的strCmd应对你生成button时给它的额外信息。
3:第二点说了,可以都用同一个单击处理函数处理所有的按钮单击事件。我不知道处理这些事件都要做些什么,这里有三种方式可供选择,不管是哪种,都是通过string strCmd=(string)(sender as ButtonBox).Tag;中的strCmd来指定,具体如下:
a.使用脚本语言,则strCmd就是脚本语言的语言特征及具体代码内容,通过执行这个代码就能实现 特定的要求。一般是逻辑运算而不参与界面操作时选择脚本语言方式较好。
b.使用委托方式,通过回调函数调用,具体做法是先定义好委托,然后在响应按钮单击事件中通过反射方式很执行后期定义的函数,后期定义的函数通过回调执行相应的操作。这种方法需要用到动态编译和反射等知识。
c.穷举法列举所有可能的操作。通过switch判断strCmd的值执行不同的操作。这个需要预先知道都有哪些操作,然后把它们列举出来,对于固定的有限操作,这种方式最简单。
2:可以让所有的按钮都响应同一个单击事件(如你的butClick),只是在单击事件处理过程中根据不同的按钮执行不同的操作,可以通过控件的Tag属性传递相关信息。如string strCmd=(string)(sender as ButtonBox).Tag;这里的strCmd应对你生成button时给它的额外信息。
3:第二点说了,可以都用同一个单击处理函数处理所有的按钮单击事件。我不知道处理这些事件都要做些什么,这里有三种方式可供选择,不管是哪种,都是通过string strCmd=(string)(sender as ButtonBox).Tag;中的strCmd来指定,具体如下:
a.使用脚本语言,则strCmd就是脚本语言的语言特征及具体代码内容,通过执行这个代码就能实现 特定的要求。一般是逻辑运算而不参与界面操作时选择脚本语言方式较好。
b.使用委托方式,通过回调函数调用,具体做法是先定义好委托,然后在响应按钮单击事件中通过反射方式很执行后期定义的函数,后期定义的函数通过回调执行相应的操作。这种方法需要用到动态编译和反射等知识。
c.穷举法列举所有可能的操作。通过switch判断strCmd的值执行不同的操作。这个需要预先知道都有哪些操作,然后把它们列举出来,对于固定的有限操作,这种方式最简单。
展开全部
int i=0;
private void button5_Click(object sender, EventArgs e)
{Button but = new Button();
i++;
but.Tag=i;
but.Click += new EventHandler(butClick);
this.flowLayoutPanel1.Controls.Add(but);}
void butClick(object sender, EventArgs e)
{
MessageBox.show(((Button)sender).Tag);
}
这样写你应该了解了吧。。
主要通过事件源来区别事件触发者。
private void button5_Click(object sender, EventArgs e)
{Button but = new Button();
i++;
but.Tag=i;
but.Click += new EventHandler(butClick);
this.flowLayoutPanel1.Controls.Add(but);}
void butClick(object sender, EventArgs e)
{
MessageBox.show(((Button)sender).Tag);
}
这样写你应该了解了吧。。
主要通过事件源来区别事件触发者。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.在窗体的初始化函数中增加读取按钮信息的函数,如果程序需要中断的(例如游戏)就把信息保存在文件里,ini、xml或数据库都可以;如果不需要中断的就把信息保存在数组中,传入窗体就ok。
2.按钮事件代码是一样的,通过Tag属性来区分事件源,用反射或者switch寻找应该触发的时间。按钮生成函数中需要先写一个布局函数防止按钮堆叠在一块,不过在WPF中可以直接添加。
2.按钮事件代码是一样的,通过Tag属性来区分事件源,用反射或者switch寻找应该触发的时间。按钮生成函数中需要先写一个布局函数防止按钮堆叠在一块,不过在WPF中可以直接添加。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
太麻烦了,这东西可以考虑记录到一个文件里面,至于用户定义事件代码,好像也可以,有个什么codedom,自己搜搜吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询