2017-09-03 2 views
1

Ich versuche, eine Anzahl von Textfeldern basierend auf dem Zellwert der Zeile in einem Datagridview zu erstellen und füllen Sie die Textfelder mit jedem Wert. Ich habe es so, es greift alle Daten bis jetzt (MessageBox.Show(textBox.text)) und es zeigt wie erwartet. Wenn ich jedoch versuche, die Textfelder zu erstellen, erstellt es nur eines (das kann ich in der Windows-Formularanwendung sehen).Anzeigen der Anzahl der Textfelder basierend auf Spalten in Datagridview

Hier ist mein Code für das Click-Ereignis:

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); 
    } 
}; 

Hier ist ein Screenshot (s) des Programms in Aktion:

Hauptbildschirm -

enter image description here

Bildschirm wenn datagridview geklickt wurde -

enter image description here

(I kommentierte die MessageBox.Show(textBox.Text), aber es zeigt 3, jimmy, Test, Test, Test, Mitglied)

Ich weiß nicht, ob es das für Schleife selbst zu überschreiben, aber das scheint unwahrscheinlich, da es zeigt alle Daten über die Nachrichtenbox. Ich lehne mich der Positionierung zu, bin mir aber nicht ganz sicher.

Jede Hilfe wäre willkommen.

Danke!

+0

Du sie alle an der gleichen Stelle, so dass nur die oberste zeigen setzen. Sie wissen, dass Daten innerhalb des DGV editiert werden können und bestimmte Validierungen durchgeführt werden, die nur gültige Daten zulassen? – Plutonix

+0

das habe ich mir gedacht. Ja, ich weiß das, aber der Benutzer möchte Textfelder. :/ – user2101411

+0

alles, was ich tun kann, um das zu beheben? – user2101411

Antwort

1

Wenn ich versuche, die Textfelder zu erstellen, erstellt es nur eine (die ich in der Windows-Formularanwendung sehen kann).

Es ist weil die Textfelder sich überlappen. Der einzige, der sichtbar ist, ist die ID-Zelle (weil ihre Z-Reihenfolge die höchste ist).

Einfach Raum sie aus so dont sie übereinander sitzen:

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

danke, hat perfekt funktioniert – user2101411

Verwandte Themen