2014-11-05 4 views
-2

Я скопировал этот код из другого вопроса. Он должен работать, но это не удалось в моей попытке. Может ли кто-нибудь сказать мне, почему? благодаря!Связывание int с TextBox в C#

private void Form1_Load(object sender, EventArgs e) 
    { 
     textBox1.DataBindings.Add("Text", this, "Unit"); 

    } 

    private int unit; 
    public event EventHandler UnitChanged; // or via the "Events" list 
    public int Unit 
    { 
     get { return unit; } 
     set 
     { 
      if (value != unit) 
      { 
       unit = value; 
       EventHandler handler = UnitChanged; 
       if (handler != null) handler(this, EventArgs.Empty); 
      } 
     } 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     Unit++; 
    } 
+2

Как это провал? –

+0

@Koen: 'значение' - это значение, установленное для этого свойства! – dotctor

+0

В коде, который вы указали, свойство объекта никогда не открывается. Если вы измените «unit ++» на «this.Unit ++», то будет запущен код установщика в свойстве. Так что сделайте нам все одолжение: либо разместите весь свой код, дайте лучшее описание вашей проблемы, либо попробуйте более простой пример. Думаю, вы заметили пустые голоса? – weePee

ответ

1

Вы приращение частного поля (в нижнем регистре unit), а не свойство привязанного к TextBox (прописным Unit).

Попробуйте изменить код здесь:

private void button1_Click(object sender, EventArgs e) 
{ 
    Unit++; 
} 
+0

также увеличивается. Это не показано в текстовом поле. –

+0

@IsThatSo Да, конечно. Но обработчик события вызывается только при изменении «Unit» (в настройщике). –

+0

Я думаю, ему нужно обновленное значение, которое будет показано в текстовом поле. –

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