2016-08-04 30 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

最初にテキストボックスを隠してから、カウントに基づいて表示するのではなく、動的にテキストボックスを生成してください。 –

+0

申し訳ありません、コードを追加しました。 –

答えて

0

これについてはわかりませんが、配列やリストなどのコレクションにテキストボックスを追加するのはどうですか?

例:

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

次に、あなたがあなたのボックスを通過し、foreachの(またはのために)ループを使用することができます。

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); 
} 
関連する問題