.net中两个窗体的传值问题
来源:互联网 发布:亚信数据 编辑:程序博客网 时间:2024/06/05 11:26
编了快半年的程了,发现自己水平真是低的可怜,买了2个半月的电脑今天才用来学习了!终于有一天晚上没打星际了! 在网上找关于.net的事件委托。找了一些,感觉是皮毛,理解还不是很深,但又怕自己忘了,所以贴出来!同时也催促自己。关于2个窗体间的传值问题,3个类,一个中间类,用来存放传的值,2个窗体,主窗体一个textbox,一个button,副窗体就一个textbox,当副窗体textbox值变时,主窗体textbox也变! 代码如下:C#.net:中间类:using System;namespace WindowsApplication1
{
//定义一个委托
public delegate void SendMessage(string s);public class cResult
{
//声明一个类事件,类型是上面的委托
public event SendMessage txtChange;
//存放结果的中间变量
public string r1 = string.Empty ;
//定义一函数,目的是在form2中调用次函数,然后引发txtChange事件
//而txtChange事件具体实现在form1中,正好可以改变文本框text值
public void ChangeText(string s ){
//判断是否为空
if (txtChange!=null){
//触发事件
txtChange(s);
}
}
}
} 主窗体:private void button1_Click(object sender, System.EventArgs e)
{
//实例化一个中间类
cResult r = new cResult();
//订阅此类的txtChange事件为SendMessage,具体实现内容在方法:Message中
r.txtChange +=new SendMessage(Message);
//实例化form2
Form2 fr2 = new Form2(r);
//显示form2窗体.fr2.Show()两个窗体都可以看,但是ShowDialog方法,最小化其中一个,另外一个也最小化
fr2.ShowDialog();
}
private void Message(string s)
{
//form2的文本框值给form1的文本框
this.textBox1.Text=s;
} 副窗体://定义一个中间类
private cResult r;
//构造函数
public Form2(cResult r):this()
{
//接收从form1传过来的中间类cResult
this.r=r;
}private void textBox1_TextChanged(object sender, System.EventArgs e)
{
//当文本框改变时,调用中间类的ChangeText函数,从而引发txtChange事件
r.ChangeText(this.textBox1.Text );
} vb.net:中间类:'定义一个委托
Public Delegate Sub SendMessage(ByVal str As String)Public Class cResult
'声明一个类事件,类型是上面的委托
Public Event TextChange As SendMessage
'存放结果的中间变量
Dim r1 As String = String.Empty
'定义一函数,目的是在form2中调用次函数,然后引发txtChange事件
'而txtChange事件具体实现在form1中,正好可以改变文本框text值
Public Sub ChangeText(ByVal str As String)
Try
'不知道如何判断事件是否为空?,所以加了try...catch..
'触发事件
'vb.net中用关键字RaiseEvent调用事件
RaiseEvent TextChange(str)
Catch ex As Exception
'...
End Try
End Sub
End Class 主窗体:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'实例化一个中间类
Dim r As New cResult
'订阅此类的TextChange事件为SendMessage,具体实现内容在方法:Message中
'好像和定义的委托SendMessage没什么关系,暂时不明白。???AddHandler r.TextChange, New EventHandler(AddressOf SendMessage(Message))
AddHandler r.TextChange, AddressOf Message '实例化form2
Dim fr2 As New Form2(r)
'显示form2窗体.fr2.Show()两个窗体都可以看,但是ShowDialog方法,最小化其中一个,另外一个也最小化
fr2.ShowDialog()
End Sub Private Sub Message(ByVal str As String)
'form2的文本框值给form1的文本框
Me.TextBox1.Text = str
End Sub 副窗体: '定义一个中间类
Private r As cResult Public Sub New(ByVal r As cResult)
MyBase.New() '该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'接收从form1传过来的中间类cResult
Me.r = r '在 InitializeComponent() 调用之后添加任何初始化 End SubPrivate Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
'当文本框改变时,调用中间类的ChangeText函数,从而引发txtChange事件
r.ChangeText(Me.TextBox1.Text)
End Sub
{
//定义一个委托
public delegate void SendMessage(string s);public class cResult
{
//声明一个类事件,类型是上面的委托
public event SendMessage txtChange;
//存放结果的中间变量
public string r1 = string.Empty ;
//定义一函数,目的是在form2中调用次函数,然后引发txtChange事件
//而txtChange事件具体实现在form1中,正好可以改变文本框text值
public void ChangeText(string s ){
//判断是否为空
if (txtChange!=null){
//触发事件
txtChange(s);
}
}
}
} 主窗体:private void button1_Click(object sender, System.EventArgs e)
{
//实例化一个中间类
cResult r = new cResult();
//订阅此类的txtChange事件为SendMessage,具体实现内容在方法:Message中
r.txtChange +=new SendMessage(Message);
//实例化form2
Form2 fr2 = new Form2(r);
//显示form2窗体.fr2.Show()两个窗体都可以看,但是ShowDialog方法,最小化其中一个,另外一个也最小化
fr2.ShowDialog();
}
private void Message(string s)
{
//form2的文本框值给form1的文本框
this.textBox1.Text=s;
} 副窗体://定义一个中间类
private cResult r;
//构造函数
public Form2(cResult r):this()
{
//接收从form1传过来的中间类cResult
this.r=r;
}private void textBox1_TextChanged(object sender, System.EventArgs e)
{
//当文本框改变时,调用中间类的ChangeText函数,从而引发txtChange事件
r.ChangeText(this.textBox1.Text );
} vb.net:中间类:'定义一个委托
Public Delegate Sub SendMessage(ByVal str As String)Public Class cResult
'声明一个类事件,类型是上面的委托
Public Event TextChange As SendMessage
'存放结果的中间变量
Dim r1 As String = String.Empty
'定义一函数,目的是在form2中调用次函数,然后引发txtChange事件
'而txtChange事件具体实现在form1中,正好可以改变文本框text值
Public Sub ChangeText(ByVal str As String)
Try
'不知道如何判断事件是否为空?,所以加了try...catch..
'触发事件
'vb.net中用关键字RaiseEvent调用事件
RaiseEvent TextChange(str)
Catch ex As Exception
'...
End Try
End Sub
End Class 主窗体:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'实例化一个中间类
Dim r As New cResult
'订阅此类的TextChange事件为SendMessage,具体实现内容在方法:Message中
'好像和定义的委托SendMessage没什么关系,暂时不明白。???AddHandler r.TextChange, New EventHandler(AddressOf SendMessage(Message))
AddHandler r.TextChange, AddressOf Message '实例化form2
Dim fr2 As New Form2(r)
'显示form2窗体.fr2.Show()两个窗体都可以看,但是ShowDialog方法,最小化其中一个,另外一个也最小化
fr2.ShowDialog()
End Sub Private Sub Message(ByVal str As String)
'form2的文本框值给form1的文本框
Me.TextBox1.Text = str
End Sub 副窗体: '定义一个中间类
Private r As cResult Public Sub New(ByVal r As cResult)
MyBase.New() '该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
'接收从form1传过来的中间类cResult
Me.r = r '在 InitializeComponent() 调用之后添加任何初始化 End SubPrivate Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
'当文本框改变时,调用中间类的ChangeText函数,从而引发txtChange事件
r.ChangeText(Me.TextBox1.Text)
End Sub
- .net中两个窗体的传值问题
- winForm 中两个窗体的传值问题
- VB.Net 两个窗体之间的传值及修改
- 两个窗体间的传值问题,模态(showModalDialog)窗口
- C#中两个不同窗体之间的传值
- VC++.NET winForm中怎样实现两个窗体互相修改对方TextBox的值,我是菜鸟:)
- ASP.net中防止弹出窗体中,开起两个一样的新子窗体
- vb.net 中最小化到托盘和锁定窗体大小的问题(notifyIcon的两个重要属性)
- C#中一个窗体传递另一个窗体的值和sting类型到double类型的转换两个问题
- 两个winform窗体之间的传值
- c# 两个窗体之间的传值
- ASP.NET中窗体传值的三种方式
- [VB.NET]VB2005 中MDI窗体的剪贴板问题
- 两个模式窗体的刷新问题
- Visual Studio 中两个窗体(WinForm)之间相互传值的方法
- NetBeans中两个窗体之间如何传值
- Windows中操作窗体的两个API
- 两个窗体之间传值
- 选择的路错了
- 支付宝Payto接口的c#.net实现
- 支付宝接口(目前应该是好的)
- DirectX编程:[初级]C# 中利用 DirectSound 录音
- C# Socket编程笔记
- .net中两个窗体的传值问题
- 模版和多态策略化加锁
- 线程常用的操作方法
- 浅谈多线程
- 如何禁用开始中"运行"功能
- 浅谈同步
- 新建用户账号后,原用户名(Administrator)不见的解决方法
- 一个API拦截的例子
- Vaadin Web应用开发教程(44): 使用Container接口管理一组Item