窗体间和自定义控件的传值
来源:互联网 发布:java 获取服务器ip 编辑:程序博客网 时间:2024/06/12 19:50
一、窗体间传值
1、子窗体From如果想调用主窗体的变量、方法,修改或获取主窗体控件的属性,可将主窗体作为一个参数在实例化From2时传入from2.
代码如下:
在主窗体中:
第一步:在主窗体中建立代表主窗体的公共变量
public mainFrom frm_main; public mainFrom() { InitializeComponent(); frm_main = this; }第二步:在子窗体中设置窗体的构造函数,引入主窗体类型的参数
private mainFrom frm_main; public Form2(mainFrom from) { InitializeComponent(); frm_main = from; }
第三步:实例化子窗体时将主窗体 的变量代入子窗体Form2 frm = new Form2(frm_main); frm.Show();
2这部分内容转载自点击打开链接图文详解C#窗体间传递数据
——窗口1若干TextBox中的数据,传递到窗口2中的ListView
功能描述:主窗体有一ListView控件和一“添加”Button控件。点击“添加”Button弹出一窗口,此窗口有若干TextBox,输入数据后,点击“确定”Button,数据回传到主窗体的ListView中。
核心知识:委托
实现步骤:第一步:新建两个窗体,各自添加控件并设计成如下效果:
FrmMain 主窗体,Form2 交互录入窗体
第二步:Form2.cs中的代码编写如下:(红色标记代码需要手动输入)
namespace MenuDemo
{
public delegate void MyDelegate(string Item1, string Item2);//委托实质上是一个类
public partial class Form2 : Form
{
public MyDelegate myDelegate;//声明一个委托的对象
public Form2()
{
InitializeComponent();
}
private void btnSure_Click(object sender, EventArgs e)
{
myDelegate(this.textBox1.Text, this.textBox2.Text);
this.Dispose();
}
}
}
第三步:主窗口代码编写如下:(红色标记代码需要手动输入)
namespace MenuDemo
{
public partial class FrmMain : Form
{
public FrmMain()
{
InitializeComponent();
}
private void btnAdd_Click_1(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.myDelegate += new MyDelegate(Add);
// f2.Owner = this; f2.Show();
}
public void Add(string Item1, string Item2)
{
this.listView1.Items.Add(Item1);
this.listView1.Items[listView1.Items.Count - 1].SubItems.Add(Item2);
}
private void btnDelete_Click_1(object sender, EventArgs e)
{
int i = 0;
if (listView1.SelectedItems.Count > 0)
{
i = listView1.SelectedItems[0].Index;
listView1.Items[i].Remove();
}
}
}
}3、自定义控件和主窗体的传值参考点击打开链接
利用事件委托
自定义控件的某个事件发生时,修改主窗体中的设置,可利用事件委托。在主窗体中的构造函数中
控件.事件1+=eventhandle (事件2);
事件1是指自定义控件中的事件,事件2是主窗体中的一个函数。
eventhandle:不同的事件需要不同的委托类型
+=:委托注册符。
过程:1、将事件所在的控件的modifiers属性设置为public
2、在自定义控件中建立事件。
private void button1_Click(object sender, EventArgs e) { }3.在主窗体的构造函数里将自定义控件里的事件委托给主窗体里的事件gis11.button1.Click+=new EventHandler(button2_Click);4、在主窗体中实现button2_Click函数private void button2_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(frm_main);
frm.Show();
}
阅读全文
0 0
- 窗体间和自定义控件的传值
- 创建自定义形状的窗体和控件
- 窗体使用自定义的控件
- 一个自定义的窗体样式MessageBox控件
- 自定义类给窗体的控件赋值
- 利用窗体的自定义属性实现窗体传值
- 不同窗体的控件传值问题
- Android中使用Intent进行窗体切换,并且传值和自定义类的对象详解 .
- Android中使用Intent进行窗体切换,并且传值和自定义类的对象详解
- 不规则窗体和控件的创建
- Gtk透明窗体和控件的研究
- 获取窗体和控件的句柄
- Qt中子窗体控件向父窗体控件传值
- Winform自定义窗体与控件的外观形状
- c++多线程读写窗体控件_自定义消息的实现
- c++多线程读写窗体控件_自定义消息的实现
- c++多线程读写窗体控件_自定义消息的实现
- Android—点击自定义dialog窗体的控件销毁自己
- 那些不正经的前端笔试题
- 如何删除ArrayList中的重复元素
- maven中出现java.lang.ClassNotFoundException: org.apache.http.entity.mime.content.ContentBody
- 扑克牌顺子java实现
- Java简单使用Redis.
- 窗体间和自定义控件的传值
- 树状数组入门
- JAR概念和jar命令
- 设计模式_享元模式(15)
- 启动Django服务让其他电脑可访问
- set用法
- [POJ3648] 参加婚礼
- hc-05蓝牙模块与arduino连接实现手机控制蓝牙智能小车
- python datetime.timedelta的日期计算