У меня есть класс, который динамически генерирует представление списка и помещает его в элемент управления с вкладками. Когда пользователь изменяет размеры формы, я хочу зафиксировать это событие и изменить размер списка. Я могу установить свойство dock, но прямо над сеткой есть панель со списком (позволяет пользователю сортировать данные). И когда я установил стыковку, сетка закрепляется в верхней части вкладки и не понимает, что там есть комбо. Может быть, я делаю что-то не так.
Вот пример кода:
public class KI_Tab_Items_ListviewControl : KI_Tab_Items, IDisposable
{
private ListView m_Listview = new ListView();
private ComboBox m_ComboBox = new ComboBox();
public ListView ListViewControl { get { return m_Listview; } set { m_Listview = value; } }
public ComboBox ComboBoxControl { get { return m_ComboBox; } set { m_ComboBox = value; } }
public override void ClearItems()
{
ListViewControl.Items.Clear();
}
public override void PopulateControls()
{
base.PopulateControls();
}
public virtual void AddColumnHeaders()
{
ListViewControl.Columns.Clear();
}
public KI_Tab_Items_ListviewControl(TabControl m_TabControl, int lIndex, bool DisplayComboBox = true)
{
if (m_TabControl.TabPages[lIndex].Controls.Count == 0)
{
int ListviewTop = 0;
m_TabControl.TabPages[lIndex].Controls.Clear();
if (DisplayComboBox)
{
m_TabControl.TabPages[lIndex].Controls.Add(ComboBoxControl);
ComboBoxControl.Dock = DockStyle.Top;
ComboBoxControl.Visible = true;
ComboBoxControl.Left = 0;
ComboBoxControl.Top = 0;
ListviewTop = ComboBoxControl.Top + ComboBoxControl.Height;
}
m_TabControl.TabPages[lIndex].Controls.Add(ListViewControl);
ListViewControl.Anchor = AnchorStyles.Top;
ListViewControl.Dock = DockStyle.Bottom;
ListViewControl.Visible = true;
ListViewControl.Top = ListviewTop;
ListViewControl.Height = m_TabControl.TabPages[lIndex].Height - ListviewTop;
}
}
void System.IDisposable.Dispose()
{
Tab_Control.Controls.Clear();
m_Listview = null;
m_ComboBox = null;
}
}