与性质两种形式之间传递数据 [英] Passing data between two forms with properties

查看:186
本文介绍了与性质两种形式之间传递数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在C#2的Windows窗体之间传递数据。 Form1中的主要形式,其文本框将收到form2_textbox和放大器传递给它的文本;在其文本框(form1_textbox)显示。



首先,打开Form1中,用一个空的文本框和一个按钮,在点击form1_button,Form2的打开。在窗体2,我进入了form2_textbox和放大器的文本;然后单击该按钮(form2_button)。在点击这个按钮的事件,它将发送文本到Form1的文本框和放大器; Form1上会聚焦其从窗口2收到一个文本空form1_textbox。



我使用的属性来实现这个任务。 FORM2.CS



公共部分类窗体2:表
{
//形式申报事件2
公共事件的EventHandler SomeTextInSomeFormChanged;

 公共窗体2()
{
的InitializeComponent();

}
公共字符串get_text_for_Form1
{
{返回form2_textBox1.Text; }
}

// Form2上的按钮点击事件,从窗口2文本将被发送到Form 1:

公共无效的button1_Click(对象发件人,EventArgs E)
{
Form1的F1 =新Form1的();
f1.set_text_in_Form1 = get_text_for_Form1;

//如果用户存在
如果(SomeTextInSomeFormChanged!= NULL)
{
SomeTextInSomeFormChanged(本,NULL);
}

}

}

Form1.cs的

 公共部分Form1类:表格
{
公共Form1中()
{
的InitializeComponent();
}

公共字符串set_text_in_Form1
{
集合{form1_textBox1.Text =价值; }
}

私人无效form1_button1_Click(对象发件人,EventArgs五)
{
窗体2 F2 =新Form2的();
f2.Show();
f2.SomeTextInSomeFormChanged + =新的EventHandler(f2_SomeTextInSomeFormChanged);
}

//在形式上1 subcribe给事件
Form2的窗体2 =新Form2的();

公共无效f2_SomeTextInSomeFormChanged(对象发件人,EventArgs五)
{
this.Focus();

}
}


解决方案

在窗口2,您需要创建活动,订阅它在Form1。 。这就是所有

  //声明在形式上2 
公共事件的EventHandler SomeTextInSomeFormChanged事件;

//调用text_changed事件
如果(SomeTextInSomeFormChanged!= NULL)
SomeTextInSomeFormChanged(这一点,空)Form2的事件;

//在形式上1 subcribe给事件
VAR窗口2 =新Form2的();
form2.SomeTextInSomeFormChanged + = SomeHandlerInForm1WhereYouCanSetForcusInForm1



更新:



窗体2:

 公共窗体2()
{
的InitializeComponent();
}

公共无效的button1_Click(对象发件人,EventArgs五)
{
//如果用户存在
如果(SomeTextInSomeFormChanged!= NULL)
{
SomeTextInSomeFormChanged(form2_textBox1,NULL);
}
}



Form1中:

 公共部分Form1类:表格{

公共Form1的(){在InitializeComponent(); }

私人无效form1_button1_Click(对象发件人,EventArgs五)
{
窗体2 F2 =新Form2的();
f2.Show();
f2.SomeTextInSomeFormChanged + =新的EventHandler(f2_SomeTextInSomeFormChanged);
}

公共无效f2_SomeTextInSomeFormChanged(对象发件人,EventArgs五)
{
VAR textBoxFromForm2 =(文本框)发送;
form1_textBox1.Text = textBoxFromForm2.Text
this.Focus();
}
}


I am passing data between 2 windows forms in C#. Form1 is the main form, whose textbox will receive the text passed to it from form2_textbox & display it in its textbox (form1_textbox).

First, form1 opens, with an empty textbox and a button, on clicking on the form1_button, form2 opens. In Form2, I entered a text in form2_textbox & then clicked the button (form2_button).ON click event of this button, it will send the text to form1's textbox & form1 will come in focus with its empty form1_textbox with a text received from form2.

I am using properties to implement this task. FORM2.CS

public partial class Form2 : Form { //declare event in form 2 public event EventHandler SomeTextInSomeFormChanged;

public Form2()
{
    InitializeComponent();

}
public string get_text_for_Form1
{
    get { return form2_textBox1.Text; }
}

//On the button click event of form2, the text from form2 will be send to form1:

public void button1_Click(object sender, EventArgs e)
{
    Form1 f1 = new Form1();
    f1.set_text_in_Form1 = get_text_for_Form1;

//if subscribers exists
if(SomeTextInSomeFormChanged != null)
{
    SomeTextInSomeFormChanged(this, null);
}

}

}

FORM1.CS

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public string set_text_in_Form1
    {
        set { form1_textBox1.Text = value; }
    }

    private void form1_button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
        f2.SomeTextInSomeFormChanged +=new EventHandler(f2_SomeTextInSomeFormChanged);  
    }

    //in form 1 subcribe to event
    Form2 form2 = new Form2();

    public void f2_SomeTextInSomeFormChanged(object sender, EventArgs e)
    {
        this.Focus();

    }
}

解决方案

In form2 you need to create event and subscribe to it in form1. Thats all.

//declare event in form 2
public event EventHandler SomeTextInSomeFormChanged;

// call event in form2 text_changed event
if(SomeTextInSomeFormChanged != null)
   SomeTextInSomeFormChanged(this, null);

//in form 1 subcribe to event
var form2 = new Form2();
form2.SomeTextInSomeFormChanged += SomeHandlerInForm1WhereYouCanSetForcusInForm1

Update:

Form2:

public Form2()
{
    InitializeComponent();
}

public void button1_Click(object sender, EventArgs e)
{
//if subscribers exists
  if(SomeTextInSomeFormChanged != null)
  {
    SomeTextInSomeFormChanged(form2_textBox1, null);
  }
}

Form1:

public partial class Form1 : Form { 

   public Form1() { InitializeComponent(); }

    private void form1_button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.Show();
        f2.SomeTextInSomeFormChanged +=new EventHandler(f2_SomeTextInSomeFormChanged);  
    }

    public void f2_SomeTextInSomeFormChanged(object sender, EventArgs e)
    {
        var textBoxFromForm2 = (TextBox)sender;
        form1_textBox1.Text =  textBoxFromForm2.Text
        this.Focus();
    }
}

这篇关于与性质两种形式之间传递数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆