C# 两个窗体互相调用的问题
有一个窗体Form1,里面有添加、修改等按钮,点击添加按钮进入Form2,Form2中有许多文本框,添加完成后点击Form2上的保存把数据保存下来,显示在Form1上,请...
有一个窗体Form1,里面有添加、修改等按钮,点击添加按钮进入Form2,Form2中有许多文本框,添加完成后点击Form2上的保存把数据保存下来,显示在Form1上,请问两个窗体之间的传值是怎么实现的?在尽量不修改访问修饰符的前提下。
想在Form1中调用Form2的文本框的值,又不想把Form2的文本框全都改成public,求各位高手相助 展开
想在Form1中调用Form2的文本框的值,又不想把Form2的文本框全都改成public,求各位高手相助 展开
4个回答
展开全部
不用将XXX都改成public
写个简单的委托给你参考
form1有个label1 form2有个textBox1和button1
功能 点form2中的button1,将textBox1中的值显示在label1上
//form1
private void Form1_Load(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.OnTextSubmitEvent+=new Form2.OnTextSubmit(OnTextSubmitEvent);
frm2.Show();
}
private void OnTextSubmitEvent(string obj)
{
label1.Text = obj;
}
//form2
public delegate void OnTextSubmit(string text);
public event OnTextSubmit OnTextSubmitEvent;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OnTextSubmitEvent(textBox1.Text);
}
不懂的问我 QQ511526137
写个简单的委托给你参考
form1有个label1 form2有个textBox1和button1
功能 点form2中的button1,将textBox1中的值显示在label1上
//form1
private void Form1_Load(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.OnTextSubmitEvent+=new Form2.OnTextSubmit(OnTextSubmitEvent);
frm2.Show();
}
private void OnTextSubmitEvent(string obj)
{
label1.Text = obj;
}
//form2
public delegate void OnTextSubmit(string text);
public event OnTextSubmit OnTextSubmitEvent;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
OnTextSubmitEvent(textBox1.Text);
}
不懂的问我 QQ511526137
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
委托 这个老师上课的时候给我们演示过,但是我没有程序给你,就这个思路
追问
委托可以访问private函数吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class From2
{
int num=0;
public From2(int i)
{
num=i;
}
}
class From1
{
public void Temp()
{
From2 from2=new From2(10);
from2.Show();
}
}
{
int num=0;
public From2(int i)
{
num=i;
}
}
class From1
{
public void Temp()
{
From2 from2=new From2(10);
from2.Show();
}
}
追问
我想在Form1中调用Form2的文本框的值,怎么实现呢?
追答
如果两个窗体属于同一个AppDomain,可以很简单的实现数据共享。
最简单的也是最不优雅的办法是将form1的textbox从private修改为public,这样form2就可以使用form1.textbox.Text拿到这个值了;
更好一点的办法是在form1中设置一个只读的public属性比如Passdata,在get方法中返回textbox的Text属性值,form2通过这个属性拿到这个值,这样的好处是减少了爆露的变量,程序的可控性更好;
在好一些的办法是创建一个全局的变量,由Form1在修改textbox值的事件中将修改后的值写入这个全局变量,form2读取这个全局变量拿到这个值,这样程序的结构更加明晰,功能间更加独立,利于以后维护。
如果两个窗体不属于同一个AppDomain,涉及到安全性问题,微软的.net不允许两个form存在直接通讯。我们可以通过form1写一个文本文件,注册表键值等,form2到对应的地方读取来实现。当然这样需要保证写入的目录或注册表键值对form1和form2都有权限。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询