Что будет лучше во многом зависит от того, насколько вы хотите подражать сайт вы упоминаете.
Там действительно две части, чтобы принять решение о:
- Внешний вид меню
- выработках содержания под
Вот решение, которое использует регулярные TabControl
для держите весь контент в обычном TabPages
.
Вы имели бы макет и скрипт, как обычно, включая страницы «Тексты и изображения».
Затем вы добавляете FlowLayoutPanel
к форме и коду ниже.
Метод initMenu
затем создает стили RadioButton
в качестве кнопки, дополняющей текст и изображение для каждой вкладки. Он также позволяет кнопке для последней страницы выравниваться вправо и, конечно же, выбирает соответствующую страницу при нажатии.
private void Form2_Load(object sender, EventArgs e)
{
initMenu(tabControl1, flp_menu);
}
void initMenu(TabControl TAB, FlowLayoutPanel FLP)
{
FLP.BringToFront();
FLP.Location = TAB.Location;
FLP.Width = TAB.Width;
FLP.Height = TAB.ItemSize.Height + 1;
RadioButton bt;
foreach (TabPage tp in TAB.TabPages)
{
bt = new RadioButton();
bt.Appearance = Appearance.Button;
bt.FlatStyle = FlatStyle.Flat;
bt.FlatAppearance.CheckedBackColor = Color.Gold;
// if you color-code the pages this may be nice, too:
// bt.FlatAppearance.CheckedBackColor = tp.BackColor;
bt.Image = imageList1.Images[tp.ImageIndex];
bt.ImageAlign = ContentAlignment.MiddleLeft;
bt.TextAlign = ContentAlignment.MiddleRight;
bt.Margin = new Padding(4, 2, 0, 0);
bt.Text = " " + tp.Text + " ";
bt.AutoSize = true;
bt.Tag = tp;
FLP.Controls.Add(bt);
bt.CheckedChanged += (sender, e) =>
{ TAB.SelectedTab = (TabPage)((RadioButton)(sender)).Tag; };
}
bt = (RadioButton) FLP.Controls[FLP.Controls.Count - 1];
int right = FLP.Controls[FLP.Controls.Count - 2].Right;
bt.Margin = new Padding(FLP.Width - right - bt.Width - 6, 2, 2, 3);
FLP.Resize += (sender, e) =>
{
bt = (RadioButton)FLP.Controls[FLP.Controls.Count - 1];
right = FLP.Controls[FLP.Controls.Count - 2].Right;
bt.Margin = new Padding(FLP.Width - right - bt.Width - 6, 2, 2, 3);
};
}
Вот скриншот, где вы можете увидеть, что нормальные ушки все покрыты панелями меню:
Tab управление является простым способом провести несколько страниц готовы, как к отображение пользователю, а также разработчику для компоновки и кода.
Если вы предпочитаете не жить с небольшой рамкой вокруг элемента управления Tab, вы можете использовать небольшой трюк, который я описал here и here. Он использует TabControl только для разработчика; во время выполнения TabControl скрыт, и выбранный контент перемещается в другой контейнер. Чтобы он работал над потребностями другого контейнера, очевидно, а также одной панели на странице, чтобы сохранить весь контент страницы, поскольку TabPages может жить только в TabControl.
Я действительно не уверен, что именно вы имеете в виду. Может быть, кнопки с государством? Может быть, CheckBox с внешним видом = Button? Или что делают кнопки с содержанием ниже? Или изображения? (Обе вкладки, кнопки и флажки могут иметь их.) Также, что показывает второе изображение, ваше приложение atm или то, что вы хотите? – TaW
Во втором изображении меню наверху, панель управления меню (видимо, это панель, все еще не уверена) в этом изменении содержимого в зависимости от выбранной кнопки, работает так, как вкладка отображает содержимое выбранной кнопки, я хочу для тиражирования этого режима работы без использования вкладок для визуальной Studio, так как интерфейс очень отличается. – Kross
Если вы хотите использовать закругленные кнопки в winforms, вам может потребоваться их рисовать. Я думаю, что Tabcontrols с внешним видом = Кнопки придут довольно близко. – TaW