日期:2014-05-18  浏览次数:20748 次

跨窗体调用的问题
做一个winform界面,点击form1上的添加按钮打开编辑窗体form2
问题1:form2上增加的信息怎么添加到在form1中的控件中显示
问题2:form2怎么调用form1中的方法及属性

主要其实就是两个窗体互相调用的问题,还有一个疑惑是form1和form2是属于什么关系呢?

------解决方案--------------------
C# code

//Form1:一个bottom1按钮,一个label,label用来存Form2传来的值
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
      
        //添加按钮
        private void button1_Click(object sender, EventArgs e)
        {
            //实例化Form2
            Form2 f2 = new Form2();
            f2.ShowDialog(this);
            //获取Form2传来的值,楼主根据需要定义变量接收
            label1.Text = f2.textvalue;
         
        }
    }

//Form2窗体,一个TextBox,一个Button按钮

public partial class Form2 : Form
    {
        //定义公开变量,存Textbox的值
        public string textvalue;
        public Form2()
        {
            InitializeComponent();
        }

        //提交按钮
        private void button1_Click(object sender, EventArgs e)
        {
            textvalue = textBox1.Text;
        }
    }

------解决方案--------------------
LZ息怒,很多东西确实网上能搜得到的。这个其实是winform的子父窗体调用问题。第一,如果你是在form1中点击某个按钮,然后生成的一个form2对象,那么,form2与form1就是子父关系。 第二、如果你想在from2中调用form1的方法,那么其实你在新建form2这个对象的时候,可以把form1作为参数方式,在form2的构造函数中传递过去,在from2中就可以使用了。 第三、如果你想在form2中执行某个动作后,让它在form1中有响应,那么可以通过消息机制,具体可以google "c# sendMessage",一看就明了,在form1中重写WndProc函数,接收消息并处理机ok了。
希望可以帮助你。