использовать несколько экранов в окне — C#

#c# #winforms

#c# #winforms

Вопрос:

я хочу использовать несколько экранов ( panel или что-нибудь еще) в окне!

я не хочу использовать MDI Child Form

Есть ли другой способ? введите описание изображения здесь

или

введите описание изображения здесь

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

1. Есть UserControls .

2. что вы хотите, используйте usercontrol и показывайте скрытие по щелчку

Ответ №1:

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

Добавьте TabControl в свою форму.

Установите для свойства выравнивания значение Right.

Установите для свойства SizeMode значение Fixed, чтобы все вкладки имели одинаковую ширину.

Установите для свойства itemSize предпочтительный фиксированный размер для вкладок. Имейте в виду, что свойство itemSize ведет себя так, как если бы вкладки были сверху, хотя они выровнены по правому краю. В результате, чтобы сделать вкладки шире, необходимо изменить свойство Height , а чтобы сделать их выше, необходимо изменить свойство Width .

В приведенном ниже примере кода ширина установлена на 25, а высота — на 150.

Установите для свойства DrawMode значение OwnerDrawFixed.

Определите обработчик для события DrawItem TabControl, который отображает текст слева направо.

 private void TabControl1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
{
    Graphics g = e.Graphics;
    Brush _TextBrush = default(Brush);

        // Get the item from the collection. 
    TabPage _TabPage = TabControl1.TabPages(e.Index);

    // Get the real bounds for the tab rectangle. 
    Rectangle _TabBounds = TabControl1.GetTabRect(e.Index);

    if ((e.State == DrawItemState.Selected)) 
        {
        // Draw a different background color, and don't paint a focus rectangle.
        _TextBrush = new SolidBrush(Color.Red);
        g.FillRectangle(Brushes.Gray, e.Bounds);
    } 
        else 
        {
        _TextBrush = new System.Drawing.SolidBrush(e.ForeColor);
        e.DrawBackground();
    }

    // Use our own font. 
    Font _TabFont = new Font("Arial", 10.0, FontStyle.Bold, GraphicsUnit.Pixel);

    // Draw string. Center the text. 
    StringFormat _StringFlags = new StringFormat();
    _StringFlags.Alignment = StringAlignment.Center;
    _StringFlags.LineAlignment = StringAlignment.Center;
    g.DrawString(_TabPage.Text, _TabFont, _TextBrush, _TabBounds, new StringFormat(_StringFlags));
}
  

Ответ №2:

Наш подход к этому заключается в создании «представлений» как UserControl s, а затем добавлении / удалении их в коде на / из панели формы. В большинстве случаев они используют набор общих методов (интерфейс IView ), поэтому мы можем, например, проверить, отображается ли представление как несохраненные данные и т. Д.

Ответ №3:

Попробуйте управление вкладками. Надеюсь, это соответствует вашим требованиям.