Динамический элемент управления, созданный в панели компоновки потока неправильного размера

#c# #vb.net #windows #flowlayoutpanel #text-size

#c# #vb.net #Windows #flowlayoutpanel #размер текста

Вопрос:

Это, наверное, самая крутая и раздражающая ошибка, с которой я когда-либо сталкивался.

У меня есть панель компоновки потока с listview внутри нее.

ListView имеет размер 500, FlowLayoutPanel имеет размер 800

Когда пользователь нажимает кнопку, создается новый элемент управления размером 400

размер панели FlowLayoutPanel увеличивается до 900

Размер ListView уменьшается до размера панели flowlayoutpanel (900) — новый элемент управления (400) минус 20 (запас)

Элемент управления добавляется в панель FlowLayoutPanel

Проблема в том, что когда у пользователя в настройках Windows для размера шрифта установлено значение Medium вместо amsller, математика запутывается и блокирует элемент управления note за listview.

Кто-нибудь еще сталкивался с этой проблемой?

 Dim noteControl As New AddNote(CurrentEventID, "Followup", False, ConnectionID)

    noteControl.Size = New Size(500, flpMain.Height - 2)

    noteControl.cmbNoteType.Visible = False
    noteControl.Anchor = AnchorStyles.Right

    ListView1.Size = New Size(flpMain.Size.Width - noteControl.Size.Width - 45, ListView1.Size.Height)

    flpMain.Controls.Add(noteControl)

    flpMain.Width = Me.Width - 10

    For Each mycontrol As Control In flpMain.Controls
        If mycontrol.Name.ToString = "AddNote" Then

            y = CType(mycontrol, AddNote)
            mycontrol = y

            ListView1.Width = flpMain.Width - y.Width - 45

        End If
    Next

    If flpMain.Controls.Count = 1 Then

        ListView1.Width = flpMain.Width - 10

    End If

    Dim columns As Integer = ListView1.Columns.Count

    ListView1.Columns(columns - 1).Width = ListView1.Width

    For index = 0 To columns - 2

        ListView1.Columns(columns - 1).Width = ListView1.Columns(columns - 1).Width - ListView1.Columns(index).Width

    Next
  

Комментарии:

1. Какой размер имеет что? Какие элементы управления вы создаете? Какие-либо якоря установлены?

2. я понятия не имею, как это произошло, я ввел значения, одну секунду я отредактирую.

3. Какой тип элемента управления вы создаете? Вы должны опубликовать код, который вы описываете..

4. это новая пользовательская форма управления. Проблема не в коде. Проблема в том, что когда для системного параметра установлено значение «мелкий шрифт», он создается идеально, когда для системного параметра установлено значение «средний шрифт», он создает второй элемент управления большим и помещает его за элемент управления listview

5. Некоторые элементы управления, такие как ListBox, имеют свойство IntegralHeight, эффект которого зависит от размера шрифта элемента управления; есть ли это у вашей таинственной «пользовательской формы управления»? Это всегда код, и видеть его (соответствующие части) лучше, чем рассказывать об этом..