Надстройка работает правильноTableLayoutPanel не удаление элементов управления
Private Sub AddColumnToTableLayout()
Me.m_TblLyBtnHost.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, (100/m_TblLyBtnHost.ColumnCount)))
For iColumnStyle As Integer = 0 To Me.m_TblLyBtnHost.ColumnStyles.Count - 1
Me.m_TblLyBtnHost.ColumnStyles.Item(iColumnStyle).SizeType = SizeType.Percent
Me.m_TblLyBtnHost.ColumnStyles.Item(iColumnStyle).Width = 100/Me.m_TblLyBtnHost.ColumnCount
Next
'For iColumns As Integer = 0 To m_TblLyBtnHost.ColumnCount - 1
' Me.m_TblLyBtnHost.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, (100/m_TblLyBtnHost.ColumnCount)))
'Next
'Insert buttons for each of the new row ends
For iRowIndex As Integer = 0 To Me.m_TblLyBtnHost.RowCount - 1
m_btnMy = New MyButton.MyButton
Me.SetDefaultsOnMyButtonMyButton(m_btnMy, Me.m_TblLyBtnHost.ColumnCount, iRowIndex)
Me.m_TblLyBtnHost.Controls.Add(m_btnMy, Me.m_TblLyBtnHost.ColumnCount, iRowIndex)
Next
End Sub
MyButton.MyButton объявлен в классе для UserControl, как
Friend WithEvents m_btnMy As MyButton.MyButton
Функция Remove однако не
Private Sub RemoveColumnFromTableLayout()
For iRowIndex As Integer = 0 To Me.m_TblLyBtnHost.RowCount - 1
Dim Ctrl As MyButton.MyButton = Me.m_TblLyBtnHost.GetControlFromPosition(iRowIndex, Me.m_TblLyBtnHost.ColumnCount - 1)
Me.m_TblLyBtnHost.Controls.Remove(Ctrl)
Next
Me.m_TblLyBtnHost.ColumnStyles.RemoveAt(Me.m_TblLyBtnHost.ColumnCount - 1)
For iColumnIndex As Integer = 0 To Me.m_TblLyBtnHost.ColumnStyles.Count - 1
Me.m_TblLyBtnHost.ColumnStyles.Item(iColumnIndex).Width = 100/Me.m_TblLyBtnHost.ColumnCount
Next
End Sub
При переходе через RemoveColumnFromTableLayout() Я заметил, что GetControlFromPosition является ret urning «Nothing». Я начал с матрицы 2x2, и после добавления столбца я правильно имел матрицу 2x3 с кнопкой. После удаления я неправильно имею матрицу 3x2 того же набора кнопок. Я попытался использовать утилиту управления, прежде чем понял, что GetControl возвращает «Nothing».
Спасибо за любую помощь.
Ну вот загвоздка GetControlFromPosition не работает, как мы могли бы подумать. Добавьте еще одну функцию, которая проходит через все ячейки, просматривающие каждую из ячеек. См. Решение – garaber
Если вы хотите удалить все элементы управления, вы можете использовать 'Me.m_TblLyBtnHost.Controls.Clear()'; или если вы хотите быть более избирательным (выбирая определенные элементы управления для удаления), вы можете перебирать все содержащиеся элементы управления ('Me.m_TblLyBtnHost.Controls). – varocarbas
Нет Только последний столбец или строка. Все, кроме Idle_Mind, поймало мои ошибки. И я направлялся к тому, что, как я думал, был заслуженной яростью. :) – garaber