我的目的是:在frm1中打开frm2,在frm2中选择数据x,然后关闭frm2,同时x显示在frm1的text里面。
解决方法是:在frm1中new一个类class 的实例mcla,然后改写frm2构造函数public frm2(class tx),在frm1中打开frm2时传递这个类,frm2 fre = new frm2(mcla) fre.Show()请问后面如何处理这个类才能达到目的?处理这个类的代码写在frm2的那个事件中?或者有其他方法解决这个问题么?我是新手,最好能给段代码,不胜感激!
解决方法是:在frm1中new一个类class 的实例mcla,然后改写frm2构造函数public frm2(class tx),在frm1中打开frm2时传递这个类,frm2 fre = new frm2(mcla) fre.Show()请问后面如何处理这个类才能达到目的?处理这个类的代码写在frm2的那个事件中?或者有其他方法解决这个问题么?我是新手,最好能给段代码,不胜感激!
解决方案 »
- WebClient.DownloadFile下载exe文件和dll文件报404错误
- 能否将类作为参数传递 不是确定的类
- C#中Bitmap显示图片,并设置一些透明色的问题!
- 我有2个dateTable想使用Merge()整合在一起,但结果不是我想要的
- ICollection 是什么??
- vs2005里的类文件在那个文件夹~(c#) 高人求教!
- C# 刷新
- 用C#调用soap的服务,传了一个xml过去,为什么是乱码那(文字部分)?请问如何知道当前应用程序的编码方式
- 使用streamWrite 对文本文件进行写操作,如果此文本文件被另一进程使用怎么办?
- 在98下面,c#有啥好的编辑和编译环境?
- 程序打包问题!
- C#中的Web开发 往Word等文档中写如数据的问题
public partial class Form2 : Form
{
private int _x=0;
public int x
{
set { _x = value; }
get { return _x; }
}
}public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form2(); if (frm.ShowDialog() == DialogResult.OK)
{
Textbox1.Text=frm.x;
}
}
}
不行啊!另外,Form1 frm = new Form2(); 这里是不是写错了?
1.将Form1中将要获得Form2中返回值TextBox设置为Public;-- public TextBox TextBox1 = new TextBox();--
2.创建Form2实体的时候,将Form1对象传到Form2;--new Form2(this).ShowDialog();--Form2变量Form1 frm接收:
3.可以在Form2中更改Form1对象中的TextBox中的值.--frm.TextBox1.Text="";--*若存在安全性问题:
1.可以试试Form1中的Form.CheckForIllegalCrossThreadCalls属性设置为false;
或
2.可以将Form2对象的TopLevel属性设为false;
2:另外最简单的办法是,将父窗口引用传递给子窗口,然后在子窗口的关闭事件中给父窗口的属性赋值
1的缺点是:实现稍微麻烦点
2相当简单。很容易理解
例如text为TextBox控件
public partial class Form2 : Form
{
private TextBox _x;
public TextBox x
{
set { _x = value; }
}
///那么就可以在from2里面更改TextBox的属性了
}public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form2();
frm.x=你的textbox控件;
frm.ShowDialog()
}
}
public partial class Form2 : Form
{
private int _x=0;
public int x
{
set { _x = value; }
get { return _x; }
} private void btnOK_Click(object sender, EventArgs e)
{
_x=10;
this.DialogResult = DialogResult.OK;
this.Close();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2(); if (frm.ShowDialog() == DialogResult.OK)
{
Textbox1.Text=frm.x;
} frm.Dispose();
}
}
{
private string _x = "";
public string x
{
set { _x = value; }
get { return _x; }
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
this.x = "wwwwww";
}
}
public partial class Form1 : Form
{
private void textBox1_DoubleClick(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.Show();
this.textBox1.Text = frm.x;
}
}
if (frm.ShowDialog() == DialogResult.OK)
{
Textbox1.Text=frm.x;
}
这条就已经执行过去了.this.DialogResult = DialogResult.OK;
把这个加上
interface aa
{
public void ChangeText(string text);
}
public partial class Form2 : Form
{
private aa _x;
public aa x
{
set { _x = value; }
}
pulic Form2(aa temp)
{
_x=temp;
}
///在需要赋值的时候就执行接口aa的ChangeText方法
} public partial class Form1 : Form ,aa
{
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form2(this);
frm.ShowDialog()
}
///实现接口的函数
public void ChangeText(string text)
{
//你的赋值操作
}
}