【问题标题】:Pass Databinding From Child Control Through Parent UserControl通过父 UserControl 从子控件传递数据绑定
【发布时间】:2014-06-25 22:34:28
【问题描述】:

我正在尝试使用富文本框构建自定义用户控件(winforms),并希望通过用户控件传递“文本”数据绑定,以便当控件放置在表单上并且绑定源绑定到用户控件的“ Text" 数据绑定,它实际上会绑定到子richtextbox "Text" 绑定。下面的代码位用于设置文本,但更改后将无法获取文本。

用户控制:

[System.ComponentModel.DefaultBindingProperty("Text")]
    public partial class UcEditableRTBox : UserControl
    {
        public UcEditableRTBox()
        {
            InitializeComponent();
            InitControl();
        }

        [Bindable(true)]
        public override string Text
        {
            get { return rtb.Text; }
            set { rtb.Text = value; }
        }

表格:

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

        TestTable tt;

        private void FrmTest_Load(object sender, EventArgs e)
        {
            tt = TestTable.FindAll().FirstOrDefault();
            bindingSource.DataSource = tt;
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            bindingSource.EndEdit();
            tt.Save();
        }
    }

非常感谢任何关于如何进行此操作或其他资源的提示。

谢谢

【问题讨论】:

    标签: c# data-binding user-controls


    【解决方案1】:

    标准的解决方法是使用除Text 之外的其他名称:

    public string TextValue {
      get { return rtb.Text; }
      set { rtb.Text = value; }
    }
    

    有关其他解决方法的想法,请参阅 Data Binding with a Custom UserControl’s Text Property

    【讨论】:

    • 谢谢,上面的效果很好。至于使用“文本”名称,下面的代码似乎可以修复:
      private void rtb_TextChanged(object sender, EventArgs e) { this.OnTextChanged(e); }
    猜你喜欢
    • 2019-06-04
    • 2016-05-27
    • 1970-01-01
    • 2021-12-24
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2016-09-05
    相关资源
    最近更新 更多