Разрыв строки в c#

#c# #string #c#-4.0 #c#-3.0 #query-string

#c# #строка #c #-4.0 #c #-3.0 #запрос-строка

Вопрос:

У меня есть идентификатор текстовых полей как tb1, tb2, tb3 и назначение текста

 tb1.text="xyz"; 
  

Я хочу, чтобы он вызывался динамически, который принимает значение из массива примерно так

 tb(record[key]).text="xyz". 
  

что, очевидно, неправильно. Кто-нибудь может мне помочь, как это сделать, используя C#

Комментарии:

1. Будет ли когда-либо только 3 текстовых поля? Если это так, то вы можете просто использовать некоторые операторы if. Возможно, нам было бы полезно узнать, почему вы хотите это сделать.

2. @Joey думал использовать операторы if, но на самом деле у меня 16 текстовых полей. Спасибо, что дали мне знать.

3. Спасибо всем за ваши быстрые ответы!!

Ответ №1:

Вы можете использовать FindControl метод для построения строки

 TextBox tb = FindControl("tb"   record[key]) as TextBox;
tb.Text = "xyz"
  

это может быть не совсем правильно, но это должно направить вас на правильный путь.

Комментарии:

1. Одна из проблем заключается в том, что она автоматически прерывается при переименовании элементов управления. Такого рода волшебные строки в исходном коде являются антишаблоном IMO.

2. Очень верно. Я вообще стараюсь избегать таких ситуаций.

Ответ №2:

Вы можете поместить текстовые поля в массив или словарь, а затем использовать это для поиска правильного текстового поля.

 TextBox[] tb=new TextBox[]{tb1,tb2,tb3};
tb[id-1].Text="xyz"
  

Ответ №3:

Создайте массив элементов управления. Затем вы можете получить к ним доступ следующим образом:

 myTextBoxArray[0].Text = "xyz";
  

Или

 myTextBoxArray[record[key]].Text = "xyz";
  

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

http://www.daniweb.com/software-development/csharp/threads/180533

Ответ №4:

Вы могли бы использовать метод FindControl, чтобы найти их, что-то вроде этого:

 TextBox test = (TextBox)Page.FindControl("tb" record[key]);
  

Ответ №5:

Вы можете использовать что-то вроде:

 Control myTb = FindControl("tb"   record[key]);
myTb.Text = "xyz";
  

Однако позаботьтесь о том, чтобы обрабатывать ситуации, когда элемент управления не найден.

Более подробная информация здесь.