#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:
Попробуйте управление вкладками. Надеюсь, это соответствует вашим требованиям.