【问题标题】:C# Using Property of TextBox from Form2C# 使用 Form2 中 TextBox 的属性
【发布时间】:2013-06-23 23:48:58
【问题描述】:

在 C# 中,我正在开发一个应用程序,但我遇到了一些错误 我在我的项目中有两种形式,form1 和 form2。 但是当我想从 Form2 调用任何对象属性时,它不会被显示和调用。我怎样才能做到这一点?我试着做,但没有发生

Form2 上有一个文本框,我想使用 Form1 中的 ıts 属性

下面的代码是我想要的...

Messagebox.Show(Form2.textBox1.Text.ToString());

【问题讨论】:

  • 你有在 Form1 上使用的 Form2 的实例吗?
  • 在表单的构造函数中将文本框内容作为参数传递。
  • 那甚至不应该编译,因为文本框不是静态的(至少我希望它不是;它不应该是)。它也不应该公开。您应该添加一个仅公开文本的属性。
  • @kostasch。 Form2 可能是子表单,而不是父表单,所以他是创建实例的人;他只需要坚持下去。
  • 我到底应该怎么做?

标签: c# object components


【解决方案1】:

首先,Form1 真的不应该对Form2 的内部控制一无所知。文本框根本不应该公开。而是在 Form2 上创建一个属性来公开您需要的信息:

public class Form2 : Form
{
    private Textbox textbox1;

    public string SomeText //TODO replace with meaningful name
    {
        get { return textbox1.Text; }
    }
}

接下来,您可能正在创建表单的一个实例来显示它。您可以通过该实例访问该属性:

Form2 childForm = new Form2();

childForm.ShowDialog();

MessageBox.Show(childForm.SomeText);

在某些情况下,您可能还需要将Form2 的实例存储为Form1 的实例字段,而不仅仅是一个局部变量:

private Form2 childForm = new Form2();

private void SomeMethod()
{
    childForm.Show();
}

private void SomeOtherMethod()
{
    MessageBox.Show(childForm.SomeText);
}

【讨论】:

    【解决方案2】:

    试试 表格1

       public string _parameter;
       public Form1()
        {
            InitializeComponent();
    
         }
    
        public void form2_show_click(object sender, EventArgs e)
        {
           form2 frm = new form2();
           frm.ShowDialog();
            _parameter = frm.parameter;
         }
    
      form2
    
       public string parameter;
       public void form1_show_click(object sender, EventArgs e)
        {
           parameter = textBox1.Text;
           this.DialogResult = System.Windows.Forms.DialogResult.OK;
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2016-03-31
      相关资源
      最近更新 更多