Hallo!
Kleines Problemchen..hoff ich!
Ich möchte das ich bei einem klick auf den Header meines DataGridViews eine TextBox über der Header-Cell erscheint, wo ich dann den Namen der Spalte eintragen kann..
..OK, ich habs bisher so gemacht:
Im Form-Shown-Event die TextBox dem DataGridView zugewiesen:
Dann hab ich im ColumnHeaderMouseClick-Event folgenden Code:
Das funzt eig. schon ganz gut!
Eigentlich! Denn das/die Probleme die sich mir jetzt stellen sind
1. Die TextBox akzeptiert keine "Enter" oder "Return" Taste!
2. Wenn ich das DGV deaktiviere deaktiviert sich auch die TextBox!
Dies fänd ich aber für die weitere Programmfunktionalität wichtig, weil ich
A mit Enter/Return die Eingabe abschließen möchte
und
B des DGV während der TextBox-Eingabe sperren möchte/muss!
Nun wollte ich einfach mit
Leider bekomm ichs ums verrecken nicht hin die richtige Position für die TextBox auszuklüngeln..weil des DGV liegt in einem TabControl und in einer GroupBox..
..hab versucht diese mit inn die Position einzurechnen, selbst des "ToolWindowCaptionHeight" hab ich mit drinne..passt aber immer iwie nich..
Gibts da irgend ne vorgezimmerte Formel vonwegen Child-Parent-Controls usw. oder wie bekomme ich die Position der
Kleines Problemchen..hoff ich!
Ich möchte das ich bei einem klick auf den Header meines DataGridViews eine TextBox über der Header-Cell erscheint, wo ich dann den Namen der Spalte eintragen kann..
..OK, ich habs bisher so gemacht:
Im Form-Shown-Event die TextBox dem DataGridView zugewiesen:
dgvAdminTabelle.Controls.Add(tbDGV)
Dann hab ich im ColumnHeaderMouseClick-Event folgenden Code:
VB.NET-Quellcode
- Private Sub SetTextbox()
- tbDGV.Visible = True
- dgvAdminTabelle.ClearSelection()
- Dim R As Rectangle = dgv.GetColumnDisplayRectangle(index, True)
- tbDGV.Location = R.Location
- tbDGV.Size = New Size(R.Width, dgv.ColumnHeadersHeight)
- tbDGV.Text = dgv.Columns(index).HeaderText
- tbDGV.Focus()
- tbDGV.SelectAll()
- End Sub
Das funzt eig. schon ganz gut!
Eigentlich! Denn das/die Probleme die sich mir jetzt stellen sind
1. Die TextBox akzeptiert keine "Enter" oder "Return" Taste!
2. Wenn ich das DGV deaktiviere deaktiviert sich auch die TextBox!
Dies fänd ich aber für die weitere Programmfunktionalität wichtig, weil ich
A mit Enter/Return die Eingabe abschließen möchte
und
B des DGV während der TextBox-Eingabe sperren möchte/muss!
Nun wollte ich einfach mit
Controls.Add(tbDGV)
die TextBox auf die Form legen, weil dann akzeptiert diese "Enter" & "Return" UND ich kann die DGV unabhängig von der TB deaktivieren!Leider bekomm ichs ums verrecken nicht hin die richtige Position für die TextBox auszuklüngeln..weil des DGV liegt in einem TabControl und in einer GroupBox..
..hab versucht diese mit inn die Position einzurechnen, selbst des "ToolWindowCaptionHeight" hab ich mit drinne..passt aber immer iwie nich..
VB.NET-Quellcode
- Dim _location As Point = New Point(dgv.GetColumnDisplayRectangle(index, True).X + dgv.Location.X + GroupPanel2.Location.X,
- dgv.GetColumnDisplayRectangle(index, True).Y + dgv.Location.Y + GroupPanel2.Location.Y + TabControl1.Location.Y + SystemInformation.ToolWindowCaptionHeight)
- Dim R As Rectangle = New Rectangle(_location, dgv.GetColumnDisplayRectangle(index, True).Size)
Gibts da irgend ne vorgezimmerte Formel vonwegen Child-Parent-Controls usw. oder wie bekomme ich die Position der
HeaderCell
?