2017-09-03 18 views
1

私は、datagridview内の行のセルの値に基づいていくつかのテキストボックスを作成し、それぞれの値でテキストボックスを埋めようとしています。私はそれを持っているので、これまでのすべてのデータ(使用されたMessageBox.Show(textBox.text))とそれは期待どおりに表示されます。しかし、テキストボックスを作成しようとすると、ウィンドウボックスのアプリケーションで表示されるテキストボックスのみが作成されます。ここでDataGridview内の列に基づいてテキストボックスの数を表示

は、クリックイベントのために私のコードです:

メイン画面 -

enter image description here

画面:ここ

qbcDataGridView.RowHeaderMouseClick += (object sender, DataGridViewCellMouseEventArgs e) => 
{ 
    id = Convert.ToInt32(qbcDataGridView.Rows[e.RowIndex].Cells[0].Value.ToString()); 

    // get all the columns and assign them to textboxes text 
    for (int i = 0; i < qbcDataGridView.Rows[e.RowIndex].Cells.Count; i++) 
    { 
      var textBox = new TextBox 
      { 
      Name = qbcDataGridView.Rows[e.RowIndex].Cells[i].Value.ToString(), 

      Font = new Font(qbcDataGridView.Font.FontFamily, 12), 

      Text = qbcDataGridView.Rows[e.RowIndex].Cells[i].Value.ToString(), 

      Location = new Point(80, 50) 
     }; 

     Controls.Add(textBox); 

     // used for testing 
     MessageBox.Show(textBox.Text); 
    } 
}; 

は、動作中のプログラムのスクリーンショットですデータグリッドビューをクリックしたとき -

enter image description here

(私はMessageBox.Show(textBox.Text)コメントアウトしかし、それは3、ジミー、テスト、テスト、テスト、メンバーを表示します)

ループのためのインクルードは、それ自体を上書きする場合、私は知らないが、それが表示されているように、その可能性は低いと思われますメッセージボックスを介してすべてのデータ。私はポジショニングに傾いていますが、完全にはわかりません。

ご協力いただければ幸いです。

ありがとうございます!

+0

あなたはこれだけトップ1が表示されます同じ場所でそれらのすべてを入れています。 DGV内でデータを編集できることを知っており、有効な日付のみを入力できるような特定の検証を行いますか? – Plutonix

+0

それは私が思ったものです。はい、私はそれを知っていますが、ユーザーはテキストボックスを望んでいます。 :/ – user2101411

+0

これを修正するために何かできますか? – user2101411

答えて

1

テキストボックスを作成しようとすると、作成されるのは1つだけです(Windowsフォームアプリケーションで確認できます)。

テキストボックスが重複しているためです。表示されるのはIDセルだけです(Zオーダーが最も高いため)。

は単にスペースそれらをので、彼らは互いの上に座ってはいけない:

Location = new Point(80 + (i * 50), 50) 
+0

ありがとう、完璧に働いた – user2101411

関連する問題