Как выровнять текстовое поле и опорные линии в listview?
У меня есть рассогласование между моим динамическим текстовым полем и нарисованными линиями сетки, созданными в listview.
вот код, который я использую:
Private Sub ListView1_DrawSubItem(sender As Object, e As System.Windows.Forms.DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem With e.Graphics .DrawLines(New Pen(SystemColors.ButtonShadow), New Point() {New Point(ListView1.Items.Item(0).Bounds.Left, e.Bounds.Top - 1), New Point(e.Bounds.Left + e.Bounds.Width, e.Bounds.Top - 1), New Point(e.Bounds.Left + e.Bounds.Width, e.Bounds.Top + ListView1.Items.Item(0).Bounds.Height), New Point(e.Bounds.Left, e.Bounds.Top + ListView1.Items(0).Bounds.Height)}) End With e.DrawText() End Sub Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click If Not txb Is Nothing Then RemoveHandler txb.Leave, AddressOf txb_Leave ListView1.Controls.Remove(txb) txb.Hide() txb = Nothing End If txb = New TextBox() txb.Height = 20 txb.width = 217 txb.Text = Me.ListView1.SelectedItems(0).SubItems(1).Text txb.Location = New Point(ListView1.SelectedItems.Item(0).SubItems.Item(1).Bounds.X, ListView1.SelectedItems.Item(0).SubItems.Item(1).Bounds.Y - 1) txb.Tag = Me.ListView1.SelectedItems(0) AddHandler txb.Leave, AddressOf txb_Leave ListView1.Controls.Add(txb) End Sub Private Sub txb_Leave(sender As Object, e As EventArgs) Handles txb.Leave Dim item As ListViewItem item = CType(txb.Tag, ListViewItem) item.SubItems(1).Text = txb.Text End Sub
Что я уже пробовал:
Я пытался изменить высоту текстового поля перед добавлением, однако текстовое поле не реагирует ни на какие изменения, внесенные в высоту, только на ширину.
[no name]
Высоту текстового поля нельзя изменить ни в коде, ни в конструкторе, поскольку она ограничена размером шрифта. Вы можете сделать это с помощью RichTextbox, в противном случае вам может быть лучше создать пользовательский элемент управления.