【问题标题】:Usercontrol set TextBox text for other usercontrol用户控件为其他用户控件设置 TextBox 文本
【发布时间】:2014-10-08 14:04:52
【问题描述】:

我有两个不同的用户控件类。我正在尝试通过另一个用户控件为一个用户控件设置文本框文本。我的财产的获取正在工作,但集合没有做任何事情。如何解决这个问题?我在下面贴了相关代码sn-ps。

incidentCategorySearchControl.cs

     public partial class incidentCategorySearchControl : UserControl
     {

     private void dataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
      {


       incidentCategoryChange incCatChange = new incidentCategoryChange();
       //textBox1.Text = incCatChange.TextBoxCategory; // works
       incCatChange.TextBoxCategory="test"; // doesn't work

      }
    }

incidentCategoryChange.cs

    public partial class incidentCategoryChange : UserControl
    {
    public incidentCategoryChange()
    {
        InitializeComponent();
    }

    public string TextBoxCategory
    {
        get { return incidentCategoryTextBox.Text; }
        set { incidentCategoryTextBox.Text = value; }
    }

}

【问题讨论】:

    标签: c# user-controls


    【解决方案1】:

    你得到的值是默认值,因为在你构造incidentCategoryChange之前只有一行。所以 getter 和 setter 都不起作用。

    要在用户控件之间进行通信,一种可能性是以某种方式将您想要获取/设置的TextBox(或任何其他属性)的实例提供给另一个。

    这可以通过将实例保存在某处来完成,例如,通过使用同一类的 static 属性(这要求该用户控件仅存在 一个实例,但这非常简单展示想法):

    public partial class incidentCategoryChange : UserControl
    {
        public static incidentCategoryChange Instance {get; private set;}
    
        public incidentCategoryChange()
        {
            InitializeComponent();
            Instance = this;
        }
    
        public string TextBoxCategory
        {
            get { return incidentCategoryTextBox.Text; }
            set { incidentCategoryTextBox.Text = value; }
        }
    }
    

    现在你可以做

    incidentCategory.Instance.TextBoxCategory = "test";
    

    另一种解决方案是使用事件(请参阅this 问题)。 incidentCategoryChange 将订阅其他用户控件的事件CategoryValueChanged(string),并且在事件处理程序中可以更改TextBox 的值。

    【讨论】:

    • 我现在不能尝试这个,但我会让你明天听到。无论如何,谢谢:)
    【解决方案2】:

    您是否尝试过将incCatChange.TextBoxCategory="test"; 设置为incCatChange.TextBoxCategory.Text="test";

    【讨论】:

    • TextBoxCategory 不是文本框,它是一个字符串
    • 给出一个错误字符串不包含文本的定义
    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多