Member 11856456 Ответов: 0

Как выровнять текстовое поле и опорные линии в 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, в противном случае вам может быть лучше создать пользовательский элемент управления.

0 Ответов