Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个窗口上使用多个屏幕-C#_C#_Winforms - Fatal编程技术网

在一个窗口上使用多个屏幕-C#

在一个窗口上使用多个屏幕-C#,c#,winforms,C#,Winforms,我想在一个窗口上使用多个屏幕(面板或其他任何东西) 我不想使用MDI子表单 还有别的办法吗? 或 我们的方法是将“视图”创建为UserControls,然后在表单面板的代码中添加/删除它们。大多数情况下,它们共享一组常用方法(接口IView),例如,我们可以检查视图是否为未保存的数据等。我们的方法是将“视图”创建为UserControls,然后在表单面板的代码中添加/删除它们。大多数情况下,它们共享一组常用方法(interfaceIView),因此我们可以例如检查视图是否为未保存的数据,等等。

我想在一个窗口上使用多个屏幕(
面板
或其他任何东西)

我不想使用
MDI子表单

还有别的办法吗?


我们的方法是将“视图”创建为
UserControl
s,然后在表单面板的代码中添加/删除它们。大多数情况下,它们共享一组常用方法(接口
IView
),例如,我们可以检查视图是否为未保存的数据等。

我们的方法是将“视图”创建为
UserControl
s,然后在表单面板的代码中添加/删除它们。大多数情况下,它们共享一组常用方法(interface
IView
),因此我们可以例如检查视图是否为未保存的数据,等等。

尝试选项卡控件。希望它能满足您的要求。

试试Tab控件。希望它符合您的要求。

对于您展示的第二个场景,您可以使用垂直显示选项卡的选项卡控件:

将选项卡控件添加到窗体中

将“路线”属性设置为“右侧”

将SizeMode属性设置为Fixed,以便所有选项卡的宽度相同

将ItemSize属性设置为选项卡的首选固定大小。请记住,ItemSize属性的行为就像选项卡位于顶部一样,尽管它们是右对齐的。因此,为了使选项卡更宽,必须更改“高度”属性,为了使选项卡更高,必须更改“宽度”属性

在下面的代码示例中,宽度设置为25,高度设置为150

将DrawMode属性设置为OwnerDrawFixed

为TabControl的DrawItem事件定义一个处理程序,该事件从左到右呈现文本

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));
}

对于您展示的第二个场景,您可以使用垂直显示选项卡的选项卡控件:

将选项卡控件添加到窗体中

将“路线”属性设置为“右侧”

将SizeMode属性设置为Fixed,以便所有选项卡的宽度相同

将ItemSize属性设置为选项卡的首选固定大小。请记住,ItemSize属性的行为就像选项卡位于顶部一样,尽管它们是右对齐的。因此,为了使选项卡更宽,必须更改“高度”属性,为了使选项卡更高,必须更改“宽度”属性

在下面的代码示例中,宽度设置为25,高度设置为150

将DrawMode属性设置为OwnerDrawFixed

为TabControl的DrawItem事件定义一个处理程序,该事件从左到右呈现文本

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));
}

有UserControls。您想要什么使用usercontrol并在单击时显示隐藏有UserControls。您想要什么使用usercontrol并在单击时显示隐藏