用c#属性get,set来进行窗体传值?

clleady 2008-12-07 08:11:52
Form1中代码
static string value1;
private static string getvalue;
private void button1_Click(object sender, EventArgs e)
{

value1= textBox1.Text;
Form2 f2 = new Form2();
f2.Show();
}
public static string GetV
{
set { getvalue = value1; }
get { return getvalue; }
}
Form2中的代码
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = Form1.GetV;
}
我想实现的是把通过单击form1中的button把form1中的textbox内容传给Form2中的text,运行后Form2的textbox中为空,能帮忙在我的程序上修改嘛?我也说不清楚我那里错了。谢谢
注:2个窗口不存在父子关系。
...全文
1031 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
gtiroy 2008-12-08
  • 打赏
  • 举报
回复
为什么不把属性单独放到一个cs中呢?
pp_shy 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 surewy 的回复:]
一楼的方法不成功,
[/Quote]

不可能的,我试过的。
Form2中的
private string strValue;
public string Value
{
get { return strValue; }
set { strValue = value; }
}
要写成全局变量
hanyu0528 2008-12-08
  • 打赏
  • 举报
回复
6楼正解
啊兵 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 moluotuo 的回复:]
引用 5 楼 moluotuo 的 回复:
没看清应当这样 :
Form1中的代码
static string value1;
private static string GetV;
private void button1_Click(object sender, EventArgs e)
{
GetV = textBox1.Text.trim();
Form2 f2 = new Form2();
f2.Show();
}
public static string GetV
{
se…
[/Quote]
楼上的可行,但是“再用快捷键Ctrl+R,Ctrl+E 再回车 ”为什么要密封字段呢?
journeydj 2008-12-08
  • 打赏
  • 举报
回复
还有就是1楼的方法是没问题的。都是那么做。你的写法有点新潮。
tj_tiger 2008-12-08
  • 打赏
  • 举报
回复
用public属性啊,又不是在web上用的,还要用get和set。
journeydj 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 clleady 的帖子:]
Form1中代码
static string value1;
private static string getvalue;
private void button1_Click(object sender, EventArgs e)
{

value1= textBox1.Text;
Form2 f2 = new Form2();
f2.Show();
}
public static string GetV
{
set { getvalue = value1; }
get { return getvalue; }
}
Form2中的代码
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = Form1.GetV;
}
我想实现的是把…
[/Quote]

LZ方法本身的问题是你根本就没有给 getvalue 赋过值啊.你赋值的是value1。

value1= textBox1.Text;后加上GetV=value1
armstrongw 2008-12-08
  • 打赏
  • 举报
回复
LZ是新手,鉴定完毕~
patrickpan 2008-12-08
  • 打赏
  • 举报
回复
一楼的代码没问题,查查其它问题。
surewy 2008-12-08
  • 打赏
  • 举报
回复
5樓用了靜態成員(static),可以。

如果是這樣,
可以form2的textbox1設成public的

public System.Windows.Forms.TextBox textBox1;//在Form2.Designer.cs中。

在form1中寫上

private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.textBox1.Text = textBox1.Text;
form2.Show();
}

moluotuo 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 moluotuo 的 回复:]
没看清应当这样 :
Form1中的代码
static string value1;
private static string GetV;
private void button1_Click(object sender, EventArgs e)
{
GetV = textBox1.Text.trim();
Form2 f2 = new Form2();
f2.Show();
}
public static string GetV
{
set { GetV = value; } 这个value 是关键字
… get { return value1;}
}

Form2中的代码
private void Form2_Load(object sender, EventArgs e)
{
if (Form1.GetV!=null)
{

textBox1.Text = Form1.GetV;
}
}

[/Quote]
你的属性写的有问题
建议先将光标放到字段上,再用快捷键Ctrl+R,Ctrl+E 再回车
或 直接右键重构 字段即可自动生成属性

在取值前先判断下是否为null较安全哦
moluotuo 2008-12-08
  • 打赏
  • 举报
回复
Lz你好 不妨这样
Form2中的代码
static string value1;
private static string getvalue;
private void button1_Click(object sender, EventArgs e)
{
GetV = textBox1.Text.trim();
Form2 f2 = new Form2();
f2.Show();
}
public static string GetV
{
set { getvalue = value1; }
get { return getvalue;}
}

Form2中的代码
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = Form1.GetV;
}
在Form2中你取的是GetV 这个属性的值,所以在Form1中应当给属性GetV 赋值
surewy 2008-12-07
  • 打赏
  • 举报
回复
一楼的方法不成功,
pp_shy 2008-12-07
  • 打赏
  • 举报
回复
对,那个系统的。
是属性set设置的固定格式
clleady 2008-12-07
  • 打赏
  • 举报
回复
小写的value是一个什么值,怎么是蓝色的程序固有的?
pp_shy 2008-12-07
  • 打赏
  • 举报
回复
Form1中代码,处理按钮事件

private void button1_Click(object sender, System.EventArgs e)
{
Form2 f2 = new Form2();
f2.Value = this.textBox1.Text.Trim();
f2.Show();
}

Form2中代码

private string strValue;
public string Value
{
get { return strValue; }
set { strValue = value; }
}

//窗体的Load事件
private void Form2_Load(object sender, System.EventArgs e)
{
this.textBox1.Text = Value;
}

110,567

社区成员

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

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

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