关于WINFORM传值问题!

hghank571 2010-09-29 11:25:30
我在WINFORM,1页面中我在一个BUTTON事件中有个sting类型的TID我如何将这个TID传到2页面的PAGELOAD事件中?
我要是将TID定为在1页面中定为PUBLIC类型
再在2页面将1页面NEW一次后调用TID的话,TID怎么为空啊?
...全文
162 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hghank571 2010-09-29
  • 打赏
  • 举报
回复
我在1中将他设为静态的后
为声明在2中我点之后TID这一项都没有
是怎么回事?
  • 打赏
  • 举报
回复
用代理也行
在WinForm之间传值有很多种方法,在这里我用的是delegate and event进行传值.
新建一个WindowsApplication,创建两个WinForm.其实它们就是两个类.
每个WinForm中各加入一个Button和一个TextBox.
在WinForm2中写入代理和事件(delegate and event)如下:
//代理声明
public delegate void SendMessage(string str);
//事件声明
public event SendMessage SendEvent;
private void btnSend_Click(object sender, EventArgs e)
{
//调用事件
SendEvent(textBox1.Text);
}
在WinForm1中写入如下代码:
private void btnShow_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
//Form2事件注册
f2.SendEvent+=new Form2.SendMessage(GetMessage);
f2.Show();
}
//代理调用的方法
public void GetMessage(string str)
{
textBox1.Text = str;
}
在点击WinForm1的Button弹出WinForm2后,在WinForm2中文本框输入文字,然后点击按钮,信息将会立刻发送到WinForm1,并显示出来.
chen307418756 2010-09-29
  • 打赏
  • 举报
回复
你new之后 相当于新的对象
将变量设置为静态的 直接到类访问就可以了
  • 打赏
  • 举报
回复
1:新建两个窗口: Form1,Form2;

2:打开Form2,添加一个textBox:textBox1;
添加一个Button:button1;
然后添加一个构造函数:

//定义一个变量,用来传值。
public string returnValue ;
public Form2(string txtValue)
{
InitializeComponent();
this.textBox1.Text = txtValue;
}
然后在button1的单击事件中添加如下代码:

private void button1_Click(object sender, EventArgs e)
{
returnValue = this.textBox1.Text;
this.Close();
}
3:Form1中添加一个textBox:textBox1;
添加一个Button:button1;
然后在button1的单击事件中添加如下代码:

private void button1_Click(object sender, EventArgs e)
{
string txtValue = this.textBox1.Text;
Form2 f2 = new Form2(txtValue);
f2.ShowDialog();
this.textBox1.Text = f2.returnValue;
}
Form1 中 (父窗口:)

public class Form1 : System.Windows.Forms.Form {
private System.Windows.Forms.Button btnOpen;
public System.Windows.Forms.TextBox txtContent;
//注意是
public ........ ........ [STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void btnOpen_Click(object sender, System.EventArgs e)
{
Form2 frm=new Form2(this);
frm.ShowDialog();
}
}
Form2中(子窗口)

public class Form2 : System.Windows.Forms.Form {
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox txtValue;
private Form _parentForm=null;

public Form2() {
InitializeComponent();
}
public Form2(Form parentForm)
{ InitializeComponent();
this._parentForm =parentForm;
} ........ ........ 更新父窗口中文本框中的值!

private void button1_Click(object sender, System.EventArgs e)
{
((Form1)_parentForm).txtContent.Text =this.txtValue .Text ;
}
hghank571 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jayinit 的回复:]
用代理也行

C# code
在WinForm之间传值有很多种方法,在这里我用的是delegate and event进行传值.
新建一个WindowsApplication,创建两个WinForm.其实它们就是两个类.
每个WinForm中各加入一个Button和一个TextBox.
在WinForm2中写入代理和事件(delegate and event)如下:
//代理声明
……
[/Quote]
你说的这个点FORM2中的按钮没反应啊???????
纯唇Yu弄 2010-09-29
  • 打赏
  • 举报
回复
写构造函数传啊

public Form1(string str)
{
InitializeComponent();
this.label1.Text = str;
}

huminghua 2010-09-29
  • 打赏
  • 举报
回复
弄成Public static 变量名!然后到另外一个页面就可以访问了啊!
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lcc101361 的回复:]
上面引用错了 应该是引用五楼的 抱歉。。。
[/Quote]
不客气
lcc101361 2010-09-29
  • 打赏
  • 举报
回复
上面引用错了 应该是引用五楼的 抱歉。。。
lcc101361 2010-09-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jayinit 的回复:]
用代理也行

C# code
在WinForm之间传值有很多种方法,在这里我用的是delegate and event进行传值.
新建一个WindowsApplication,创建两个WinForm.其实它们就是两个类.
每个WinForm中各加入一个Button和一个TextBox.
在WinForm2中写入代理和事件(delegate and event)如下:
//代理声明
……
[/Quote]LZ新手 是学生吧 ? 这个静态的直接FORM1点就出来了 form1 f=new form1() f就点不出来 类和对象要分清 静态的在类中而非对象
wuyq11 2010-09-29
  • 打赏
  • 举报
回复
通过公共静态类进行传值
属性
public string s
{
get { return _s; }
set { _s= value; }
}

通过绑定事件进行传值;
使用Attribute
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);
}
}

public partial class Form2 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form1 frm1 = (Form1)this.Owner;
((TextBox)frm1.Controls["textBox1"]).Text = this.textBox2.Text;
this.Close();
}
}
yoyo_fan_503 2010-09-29
  • 打赏
  • 举报
回复
假设 form1 是主窗体。 form2是子窗体。
form1 中代码:
frm2 f2 = new frm2();
f2.Owner = this;

form2 pageload中代码:
f1 = (frm1)this.Owner;
string TID = f1.TID;

111,129

社区成员

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

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

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