2014-01-13 4 views
0

Я хочу сделать изменяемое по размеру меню в верхней части моей основной формы Windows. Я добавил TableLayoutPanel и установил его свойство Dock на Вверх. На этой TableLayoutPanel есть равные 4 столбца. Я добавил кнопку на каждом столбце и установил свойство Dock на Заполнить. Когда я максимизирую форму, мое меню становится шире и подходит для ширины формы. Это то, чего я хочу сейчас. Однако, когда I уменьшает (не сведен к минимуму) ширину формы, кнопки начали исчезать слева. Я ожидаю, что при уменьшении ширины формы автоматически начнется автоматизация. Как я могу это предотвратить? Какие-либо предложения?как предотвратить исчезновение контроля при уменьшении ширины формы?

+0

Вы не правильно настроили столбцы в TLP. –

+0

столбцы @HansPassant имеют значение по умолчанию: autosize – cihata87

ответ

0

Я смог воспроизвести это поведение довольно быстро в VS2013, ориентированном на инфраструктуру .NET 4.0. Кажется, что последний столбец - тот, на который влияет процесс автосохранения. Я установил столбцы как абсолютные (20 пикселей), а затем использовал динамический расчет, чтобы определить процент экрана, который должен потреблять столбец. Каждый раз, когда вы добавляете/удаляете столбец, вам нужно будет вызвать метод SetColumnSize().

public Form1() 
    { 
     InitializeComponent(); 

     SetColumnSize(); 


    } 

    private void SetColumnSize() 
    { 
     float colPercent = 100/this.tableLayoutPanel1.ColumnCount; 
     this.tableLayoutPanel1.ColumnStyles.Clear(); 
     for (int i = 0; i < this.tableLayoutPanel1.ColumnCount; i++) 
     { 
      this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, colPercent)); 
     } 
    } 
Смежные вопросы