2016-12-21 4 views
1

я развиваю свой собственный «MyTextBox» контрольWinForms. Дизайн времени привязка данных к свойству дочернего элемента управления

public class MyTextBox:UserControl 
{ 
    TextBox textBox; 
    Button button; 

    public MyTextBox() 
    { 
     this.textBox = new TextBox(); 
     this.button = new Button(); 
     this.button.Click += button_Click; 
     this.Controls.Add(this.textBox); 
     this.Controls.Add(this.button); 
    } 

    public TextBox TextBox 
    { 
     get 
     { 
      return this.textBox; 
     } 
    } 
} 

Теперь во время разработки я ставлю «MyTextBox» на форме. В конструкторе PropertyGrid Я вижу, что свойство TextBox элемента управления myTextBox1 отображается в подстроке .

Я также добавляю «BindingSource» в форму для привязки данных.

Sub-Grid предлагает свойство «Текст» для привязки, и я привязываю его к bindingSource1 так же, как мы все обычно связываем свойство Text с текстом. Я ожидаю, что Конструктор создаст следующий код:

this.myTextBox1.TextBox.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bindingSource1, "FullName")); 

Пошаговое руководство, приведенное выше, не дает этого эффекта. Мне интересно, есть ли способ сделать это. Мое намерение заключается в привязке к данным свойства «Текст» TextBox, дочернего по MyTextBox, в Design-time.

+1

Theres одно правило для DataBinding и WinForms : Не используйте его. Если вы хотите использовать Databinding, используйте WPF. – user3292642

+0

Честно говоря, я согласен с тобой. Меня мучают с тех пор, как я начал разработку проекта :). Но в любом случае мне нужно решение – Bahrom

+0

Не сдавайтесь слишком рано. Одной из наиболее полезных функций Windows Forms является привязка данных. –

ответ

1

Не сдавайтесь слишком рано. Одной из наиболее полезных функций Windows Forms является привязка данных. Для вашего требования, первое изменить TextBox свойство этого:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
public TextBox TextBox 
{ 
    get 
    { 
     return textBox1; 
    } 
} 

затем связать Text свойство вашего TextBox вашего пользовательского элемента управления в дизайнере так:

enter image description here

Смежные вопросы