2015-04-10 1 views
0

У меня есть несколько текстовых полей в форме и с введенной информацией я создаю объект с именем UserClass. Я хочу создать несколько пользователей, и для этого у меня есть разные textboxes под названием tbName1, tbName2 и т. Д. Можно ли использовать переменную в textboxname? НАПРИМЕР. tbName[variable].TextИспользование переменной в выборе объекта (текстовое поле в этом случае)

newUsers.Add(new ClassLibrary.UserClass 
(
    "AAAAAAAA", 
    tbName[variable].Text, //Is it possible to do something like this? 
    " ", 
    tbLastname[variable].Text, 
    tbEmail[variable].Text, 
    " ", 
    "0497111111", 
    "0611111111", 
    "USER" 
)); 
+3

Это невозможно, так как имена переменных должны быть определены во время компиляции. –

+3

Нет, сохраните свои текстовые поля в массиве (или словаре), а затем вы можете обращаться к ним таким образом. – Jamiec

+1

Вы действительно можете сделать это даже во время выполнения из-за очень доступных метаданных C# в каждом объекте. Проверьте эту ссылку: http://stackoverflow.com/questions/13578930/what-function-to-use-in-getting-all-textbox-names-in-form-using-c просто использовать linq – NKamrath

ответ

0

Если понять ваши требования правильно, у вас есть переменная с именем «переменная», которая имеет тип Integer и в зависимости от значения этой переменной, которую вы хотите получить текстовое свойство различных текстовых полей, которые им той же схемы, но с добавлением целочисленного суффикса. Вы могли бы решить эту проблему с помощью отражения, как это:

var tbNameX = (TextBox)this.GetType().GetProperty(tbName + variable).GetValue(this, null); 
var tbLastnameX = (TextBox)this.GetType().GetProperty(tbLastname + variable).GetValue(this, null); 
var tbEmailX = (TextBox)this.GetType().GetProperty(tbEmail + variable).GetValue(this, null); 

newUsers.Add(new ClassLibrary.UserClass 
(
    "AAAAAAAA", 
    tbNameX.Text, //Is it possible to do something like this? 
    " ", 
    tbNameX.Text, 
    tbEmailX.Text, 
    " ", 
    "0497111111", 
    "0611111111", 
    "USER" 
)); 

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

0

Боюсь, что вы не сможете объявить переменную во время выполнения, поскольку все переменные должны быть объявлены перед компиляцией.