黑马程序员技术交流社区

标题: WinForm多窗口页面传值的问题。 [打印本页]

作者: 黑马田杰    时间: 2013-1-26 10:26
标题: WinForm多窗口页面传值的问题。
本帖最后由 shdow2689 于 2013-1-27 10:56 编辑

现有两个Form窗体:Form1和Form2,希望将Form2中ListBox控件的选择值,传到Form1窗体的TextBox控件中并显示出来,使用两个方法都未实现:
第一种方法:Form1类中写一个方法"public void ChangeTextbox(string str);",然后在Form2的button_click事件中调用些方法:"xx.ChangeTextbox(listbox1.selecteditem.tostring())",结果Form1的TextBox控件的值并未实时改变。
第二种方法:将Form1中TextBox的Modifiers属性设为public,然后Form2的button_click事件中直接给它赋值,但也未实现。
请问这是怎么回事,该怎么解决此问题?

作者: 许庭洲    时间: 2013-1-26 10:52
LisBox的窗体:
private void button1_Click(object sender, EventArgs e)
{
         string value = listBox1.SelectedItem.ToString();
         Form2 frm = new Form2(value );
         frm.ShowDialog();
                        
}

TextBox的窗体:
public Form2(string value )
{
        InitializeComponent();
        textBox1.Text = value ;
}
作者: 黑马田杰    时间: 2013-1-26 11:06
谢谢,已经解决,showDialog()是模式窗口,和show有什么区别呢,用了ShowDialog就没问题了
作者: 罗志强    时间: 2013-1-26 11:38
楼主可以用一个静态变量存储,public   static   text;  这样两个窗口都能使用了,
show()方法是:打开窗口form2后,form1程序可以继续往下执行,这里就可以点很多次按钮,创建很多个form2 ,这样不太好,
showdialog()方法是:打开一个窗口后,等窗口关闭后才会继续执行主程序,也就是form1,form2不关闭的话,form1中就一至停留在了,showdialog方法。
你可以调试下,看下他们的区别
作者: 黑马田杰    时间: 2013-1-26 21:12
多谢,看来自己还要更加努力打基础啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2