ronaldo84
Erfahrenes Mitglied
Hallo Gemeinde,
folgendes Problem:
Ich habe ein DataGridview. Dieses Grid hat u.a.zwei Spalten. Eine DataGridViewComboboxColumn (Versandform) und eine DataGridViewTextboxColumn (Versandformfreitext). Die ComboxColumn hat eine BindingSoruce als DataSource (Valuemember ein Int und Displaymember ein Text) und die TextSpalte ein normales DB-Feld. Wenn nun das Value der ComboBox <Null> ist und das der Textbox != <Null> soll eigentlich der Text der Textspalte in der ComboBox-Spalte angezeigt werden. Da das mit dem DataBoundItem nicht so einfach sein dürfte habe ich mir gedacht das ich einfach ein Textfeld über die Combobox lege. Soweit bin ich bis jetzt gekommen:
Das Textfeld wird auch hinzugefügt. Leider ist das Scrollverhalten nicht korrekt d.h. das Textfeld wird nich rausgescrollt, sondern es scrollt mit und verdeckt so die anderen Spalten. Wenn der berechnete Abstand nach Link größer ist als das DataGridView wird die Texbox überhaupt nicht angezeigt, da sie denke ich mal aus dem sichtbaren Bereich herausgescrollt wird.
Nun meine Frage: Weiß jemand wie ich das schaffen könnte? Habe auch schon überlegt mir eine eigene DataGridViewComboBoxTexboxColumn abzuleiten. Denke aber das wäre noch aufwendiger.
Vielen Dank für die Mühe.
folgendes Problem:
Ich habe ein DataGridview. Dieses Grid hat u.a.zwei Spalten. Eine DataGridViewComboboxColumn (Versandform) und eine DataGridViewTextboxColumn (Versandformfreitext). Die ComboxColumn hat eine BindingSoruce als DataSource (Valuemember ein Int und Displaymember ein Text) und die TextSpalte ein normales DB-Feld. Wenn nun das Value der ComboBox <Null> ist und das der Textbox != <Null> soll eigentlich der Text der Textspalte in der ComboBox-Spalte angezeigt werden. Da das mit dem DataBoundItem nicht so einfach sein dürfte habe ich mir gedacht das ich einfach ein Textfeld über die Combobox lege. Soweit bin ich bis jetzt gekommen:
Visual Basic:
Private Sub dgvPreviewVerteiler_RowsAdded(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles dgvPreviewVerteiler.RowsAdded
If e.RowIndex = -1 Then Return
Dim dgv As DataGridView = CType(sender, DataGridView)
If dgv.Columns Is Nothing Or dgv.Columns.Count = 1 Then Return
dgv.Controls.Clear()
If (__RowsCompleteAdded) Then
Dim LeftMargin As Integer = GetLeftMargin(dgv, dgv.Columns("VersandFormID").Index)
For Each row As DataGridViewRow In dgv.Rows
If ((row.Cells("VersandFormID").Value Is DBNull.Value) And _
(row.Cells("Versandformtext").Value IsNot DBNull.Value)) Then
Dim txt As New TextBox
txt.location = New Point(LeftMargin , dgv.GetCellDisplayRectangle(dgv.Columns("VersandFormID").Index, row.Index, False).Top)
txt.Text = row.Cells("Versandformtext").Value.ToString()
txt.Size = row.Cells("Versandformtext").Size
dgv.Controls.Add(txt)
End If
Next
End If
__RowsCompleteAdded = Not __RowsCompleteAdded
End Sub
Das Textfeld wird auch hinzugefügt. Leider ist das Scrollverhalten nicht korrekt d.h. das Textfeld wird nich rausgescrollt, sondern es scrollt mit und verdeckt so die anderen Spalten. Wenn der berechnete Abstand nach Link größer ist als das DataGridView wird die Texbox überhaupt nicht angezeigt, da sie denke ich mal aus dem sichtbaren Bereich herausgescrollt wird.
Nun meine Frage: Weiß jemand wie ich das schaffen könnte? Habe auch schon überlegt mir eine eigene DataGridViewComboBoxTexboxColumn abzuleiten. Denke aber das wäre noch aufwendiger.
Vielen Dank für die Mühe.