2017-09-03 60 views
1

我試圖根據datagridview中行的單元格值創建一些文本框,並用每個值填充文本框。我擁有它,所以它抓住了迄今爲止的所有數據(使用MessageBox.Show(textBox.text)),並且按預期顯示。但是,當我嘗試創建文本框時,它只創建一個(我可以在Windows窗體應用程序中看到)。根據datagridview中的列顯示文本框的數量

這裏是我的Click事件代碼:

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

屏幕當datagridview點擊時 -

enter image description here

(我註釋掉MessageBox.Show(textBox.Text)但它顯示3,吉米,測試,測試,測試員)

我不知道,如果它的for循環改寫本身,但似乎不太可能,因爲它顯示所有的數據通過消息框。我傾向於定位,但我不完全確定。

任何幫助,將不勝感激。

謝謝!

+0

你把他們都在同一地點所以只有最上面的一個會顯示。您確實知道可以在DGV內編輯數據,並且會執行某些驗證,例如僅允許輸入有效日期? – Plutonix

+0

這就是我的想法。是的,我確實知道,但用戶需要文本框。 :/ – user2101411

+0

我能做些什麼來解決這個問題? – user2101411

回答

1

當我嘗試創建文本框時,它只創建一個(我可以在Windows窗體應用程序中看到)。

這是因爲文本框是重疊的。唯一可見的是ID單元(因爲它的z順序是最高的)。

簡單的空間出來,使他們不坐在彼此頂部:

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

謝謝,工作完美 – user2101411

相關問題