SQL Server2008的安装,SQLServer2008的安装......
2023-02-22 227 安装
软件界面编写:动态生成按钮过程中IList的使用
想实现下面这样一个效果,动态生成一个按钮,并且调用这个按钮。
具体而言,实现效果为:① 按下左上角的按钮simpleButton1,便动态地在右上角出现一个memoEdit1;② 在memoEdit1中输入任意内容;③ 按下左下角的按钮simpleButton2,memoEdit1中的内容自动地被复制到memoEdit2中。界面如下:
程序源码如下:
存在的问题:编译器提示memoEdit2.Text = memoEdit1.Text有问题,memoEdit1不存在。
问题产生的原因:memoEdit1是动态实现的,而且是private void simpleButton1_Click()的内部变量,在private void simpleButton2_Click()中是不可见的。
需要解决的问题:如何将动态生成的按钮写入类的成员变量,而非成为方法的内部变量?
为了将动态生成的按钮写入类的成员变量,这里引入IList,代码如下(其中黄色部分为新增的):
特别注意使用IList需要添加using System.Collections;
原理:先在方法外部声明IList,之后private void simpleButton1_Click()中将动态生成的按钮存入IList,最后在private void simpleButton2_Click()中从IList中将动态生成的按钮取出来。
作为抛砖引玉的案例,我记录实现以下功能的方法:在一个表格上有一个按钮,按下这个按钮之后,自动生成另一个同样的按钮。
首先,学习一下,通过IDE创建一个按钮,IDE都自动添加了哪些代码。下图中红色标记的部分为自动添加的。
疑问:我想实现的是“有一个按钮,按下这个按钮之后,自动生成另一个同样的按钮”。这需要把上面红色标记的代码写到第一个按钮的Click事件中,可是上述红色标记部分的最后一句话,显示IDE为类添加了成员变量,在Click事件中如何添加成员变量呢?
解答:新按钮不设置为类的成员变量即可。
实际使用时候,需要这样写:
(1)将上述代码中最后一行去掉。
(2)将上述代码中所有的this指针去掉。(因为新按钮不设置为类的成员变量,而this指针是指向类的)
(3)将所有的simpleButton1改为simpleButton2。
(4)上述操作之后,第一行变为simpleButton1 = new DevExpress.XtraEditors.SimpleButton();,在这第一行前面,加上DevExpress.XtraEditors.SimpleButton
(5)更改新按钮的生成位置,即第二行代码里的坐标。
最初的情形
动态生成第二个按钮
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章