c # обновить свойство экземпляра из параметра переменной - PullRequest
1 голос
/ 31 марта 2010

Скажите, у меня есть этот класс:

class block999
{
 string parm1;
 string parm2;
 string parm3;
 string parm4;
 string parm5;

 block999(){}

 setValue(object sender, RoutedEventArgs e)
 {
 }
}

И форма с этим кодом:

block999 B999 = new block999();    

TextBox parm1 = new TextBox();
TextBox parm2 = new TextBox();
TextBox parm3 = new TextBox();
TextBox parm4 = new TextBox();
TextBox parm5 = new TextBox();

parm1.LostFocus += new RoutedEventHandler(B999.setValue);
parm2.LostFocus += new RoutedEventHandler(B999.setValue);
parm3.LostFocus += new RoutedEventHandler(B999.setValue);
parm4.LostFocus += new RoutedEventHandler(B999.setValue);
parm5.LostFocus += new RoutedEventHandler(B999.setValue);

Как установить правильное свойство в методе setValue, предполагая, что имя свойства экземпляра == имя текстового поля?

Ответы [ 2 ]

2 голосов
/ 31 марта 2010

Поскольку вы используете RoutedEventArgs, я предполагаю, что вы используете WPF (или, возможно, SL).

Я думаю, что наилучшим вариантом было бы установить привязки данных между текстовыми полями и полями вашего класса. Если вы не хотите этого делать, я бы порекомендовал просто обновлять все поля всякий раз, когда изменяется любое из текстовых полей.

Нет способа получить доступ к имени локальной переменной из кода. Таким образом, вы, вероятно, не можете получить имена текстовых полей. Если они являются полями или свойствами вашего класса, теоретически вы можете сделать это с помощью отражения, но я бы не рекомендовал это в качестве решения.

1 голос
/ 31 марта 2010

Определите, что вы подразумеваете под «именем текстового поля». Имя переменной, которой она (временно) присвоена, не имеет смысла. Вы можете использовать свойство Name элемента управления, за исключением того, что в размещаемом образце вы никогда не назначите его. Если бы вы были, это было бы просто:

setValue(object sender, RoutedEventArgs e) 
 { 
       TextBox tb = sender as TextBox;
       switch(tb.Name)
       {
          case "parm1":  
           this.parm1 = .... 
          // etc

       }
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...