【问题标题】:Overlay two panels in a windows form application在 Windows 窗体应用程序中覆盖两个面板
【发布时间】:2014-04-04 04:19:55
【问题描述】:

Windows 窗体应用程序显示一个主窗体。这个主窗体包含几个不同的面板控件。根据该窗体中的某些条件,这些面板控件之一将处于活动状态,而其他控件则不可见。

第一个面板包含一个 DataGridView,第二个面板包含用于显示 DataGridView 详细信息的控件。在添加按钮上单击(或)在 DataGridView 中选择记录时,第二个面板应该是可见的。我正在使用 Visible 属性来显示和隐藏面板,但间隙显示在那里,如屏幕截图所示。

请建议处理此问题的最佳方法。

【问题讨论】:

    标签: c# winforms datagridview overlay


    【解决方案1】:

    您只需要面板共享相同的位置。您可能不想在设计时这样做,因为这会使以后的表单维护变得困难。

    Form.Load 事件中,设置底部面板的位置以匹配顶部面板的位置。

    PanelDetails.Location = PanelDataGrid.Location;
    

    现在,当您隐藏一个并显示另一个时,它们会出现在同一个地方。

    【讨论】:

    • 效果很好,它们出现在同一个地方。但是窗口大小与设计中的相同。我们可以根据活动面板大小设置窗口大小吗?还有其他选择吗?
    【解决方案2】:

    最聪明的方法是在设计师处将面板分开。这样,对它们进行的任何编辑都可以更轻松地完成,并且可以立即看到所有实际对象。

    在设计器中,将其他面板的Visible 属性设置为False,顶部的第一个除外。

    Form.Load

    • 设置所有其他面板的位置以匹配第一个面板的位置(在顶部)

    • 设置表单的高度以匹配所需的高度,该高度适合您的最高面板

    • 使用按钮切换面板的可见性(也可能是表单高度)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多