2016-08-04 2 views
-2

У меня есть текстовое поле для ввода данных и 10 текстовых полей для отображения данных. 10 текстовых полей для просмотра - visible=false. Например, когда я ввожу количество текстовых полей как «3», должно быть видно только 3 текстовых поля. (Тогда я могу делать все, что я хочу с этими текстовыми полями)Увеличить имена объектов программно C#

Example

Вот мой код;

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ToString()); 

SqlCommand pencere = new SqlCommand("select COUNT (distinct(grup)) as ürün from fiyat", conn); 
SqlCommand pencereisimleri = new SqlCommand("select distinct(grup) as ürün from fiyat", conn); 
conn.Open(); 
SqlDataReader dr = pencere.ExecuteReader(); 
SqlDataAdapter da = new SqlDataAdapter(pencereisimleri); 
DataTable dt1 = new DataTable(); 
da.Fill(dt1); 

List<String> stringArr = new List<String>(); 

for (int a = 0; a < dt1.Rows.Count; a++) 
{ 
    TextBox[a].Visible = true; 
    TextBox[a].Text = "Open Textbox";      
} 

С наилучшими пожеланиями.

+0

Итак, что вы попробовали? – BugFinder

+0

Вместо того, чтобы сначала скрывать текстовые поля, а затем показывать на основе подсчета, почему бы не генерировать их динамически n текстовых полей –

+0

К сожалению, я добавил код. –

ответ

0

Не уверен, если вы собираетесь это сделать, но как добавить текстовые поля в коллекцию, например массив или список?

Пример:

private List<TextBox> boxes = new List<TextBox>(); 
boxes.Add(textBox1); 
boxes.Add(textBox2); 
// etc... 

Затем вы можете использовать Еогеасп (или) петли, чтобы пройти через ваши коробки:

for (int a = 0; a < dt1.Rows.Count; a++) 
{ 
    boxes[a].Visible = true; 
    boxes[a].Text = "Open Textbox"; 
} 
+0

Неверуйте! наконец, это работа! –

+0

Большое вам спасибо! –

+0

Без проблем, я рад, что могу помочь –

0
int count = dt1.Rows.Count; 

foreach (Control x in this.Controls) 
{ 
    if (count == 0) 
     break; 

    if (x is TextBox) 
    { 
     ((TextBox)x).Text = "Open Textbox"; 
     ((TextBox)x).Visible = true; 
     count--; 
    } 
} 
+0

Это тоже работа, но дно для меня лучше. Спасибо большое! –

0

вы можете связать видимость массива

Visibility[] tbViz = new Visibility[10]; 
public Visibility[] TbViz { get { return tbViz; } } 
public void UpdateViz(int num) 
{ 
    for (int i = 0; i < tbViz.Length; i++) 
    { 
     if (i < num) 
      tbViz[i] = System.Windows.Visibility.Visible; 
     else 
      tbViz[i] = System.Windows.Visibility.Hidden; 
    } 

} 

Visisbility="{binding path=TbViz[0]}" 

если winforms такой же подход

public void UpdateViz(int num) 
{ 
    for (int i = 0; i < tbViz.Length; i++) 
     tbViz[i].Visisble = (i < num); 
} 
Смежные вопросы