有两个窗体 form1 和form2 点击form1 上的一个按钮弹出form2,这是form1上的按钮代码。
private void button2_Click(object sender, EventArgs e)
{
Form2 f=new Form2();
f.ShowDialog();
}
form2上也有一个按钮点击的时候会给form1回传一个值。form1把这个值显示在控件上,这是form2的按钮点击事件,我通过调用form1 的一个public方法传值给form1
private void button1_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
f.Form2Close("要传值的数据");
this.Close();
}
然后form1 的Form2Close方法这样写的
public void Form2Close(string returnValue)
{
listBox1.Items.Add(returnValue);
MessageBox.Show(returnValue);
}
我想让form1 的listBox1添加进来这个值。但是关闭form2执行这个方法以后listBox1并没有添加进去相应的值,但是MessageBox.Show(returnValue);却可以显示出传过来的值,我估计是因为form1的listBox1没有刷新的原因,小弟刚接触winform,还请大家指教解决方法。
private void button2_Click(object sender, EventArgs e)
{
Form2 f=new Form2();
f.ShowDialog();
}
form2上也有一个按钮点击的时候会给form1回传一个值。form1把这个值显示在控件上,这是form2的按钮点击事件,我通过调用form1 的一个public方法传值给form1
private void button1_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
f.Form2Close("要传值的数据");
this.Close();
}
然后form1 的Form2Close方法这样写的
public void Form2Close(string returnValue)
{
listBox1.Items.Add(returnValue);
MessageBox.Show(returnValue);
}
我想让form1 的listBox1添加进来这个值。但是关闭form2执行这个方法以后listBox1并没有添加进去相应的值,但是MessageBox.Show(returnValue);却可以显示出传过来的值,我估计是因为form1的listBox1没有刷新的原因,小弟刚接触winform,还请大家指教解决方法。
解决方案 »
- 如何把后缀为tif或者img的文件入库呢
- 如何在winform中原样显示excel表格的内容?求思路!
- 怎样使用dataGridView控件直接写数据到sql server 数据库中。
- 请问如何通过程序获得某个站点的google排名,yahoo排名效率最高
- 直接打开中文文件名的附件,ASP 可以实现,但 ASP.NET 怎么也实现不了
- C# 如何将从文本文件读入的字符串进行处理,去掉标点呢(英文文档)
- VS2005调试winform程序,添加断点提示“当前不会命中断点 还没有为该文档加载任何符号”
- 如何使datagridview中 密码列 中的内容用*号代替?
- 谁有crm的系统源代码吗?谢谢
- C# 给网页IFRAME中控件赋值
- Windows Service 中使用 ocx 控件
- winfrom貌似简单的问题
public partial class Form1 : Form
{
public static string s1;按钮事件打开FORM2窗体用ShowDialog后用命令语句赋值
private void button2_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
textBox1.Text = s1;
}
FORM2按钮事件给FORM1窗体的静态成员赋值,然后关闭 public Form2()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form1.s1 = "aabbcc";
this.Close();
}
Form1 f = new Form1();
这样再调用的时候调用的是 新form1的方法,而不是原来的form1的,所以不能改变原form1的值?
这里有错啊,LISTBOX是FORM1的吧,你在FORM2上能用,就算你改了它的作用域为PUBLIC,这样就破坏了封装性,你得用构造函数传参数
Form2 f2;
public Form1(Form2 f2)
{
InitializeComponent();
this.f2 = f2;
if(f2._str != null)
listBox1.Items.Add(f2._str.ToString());
}private string str; public string _str
{
get
{
return str;
}
set
{
str = value;
}
}
private void button1_Click(object sender, EventArgs e)
{
str = "andybang";
Form1 f1 = new Form1(this);
f1.Show();
}
传给form1的值,
然后把form2关掉,this.close();
//不需要new form1()了。
我觉得1楼说的有一定道理,你的传值可能有点问题,跟踪一下listBox1.Items.Add(returnValue)看看Items里面有没有数据。如果有的话,建议加条语句this.Refresh();
或者
listBox1.Refresh();试一试
显然是这个问题啊。在Form2里面设置一个:
property Form1 ParentForm{get;set;}然后在form1的事件中:
private void button2_Click(object sender, EventArgs e)
{
Form2 f=new Form2();
f.ParentForm = this;
f.ShowDialog();
}在form2的事件中:
private void button1_Click(object sender, EventArgs e)
{
ParentForm.Form2Close("要传值的数据");
this.Close();
}