【问题标题】:C# Winform how to allow panel draw outside the panel's parent?C# Winform 如何允许面板在面板的父级之外绘制?
【发布时间】:2019-01-09 22:43:18
【问题描述】:

我创建了一个显示数据的表单和其中包含复选框的过滤器

combobox

我使用了一个按钮和一个面板来执行此操作,发现面板只显示在父面板中,不像组合框那样浮动

还是面板不能这样做?

问候

【问题讨论】:

  • 面板不能超出表单范围。如果您能够使用ContextMenuStrip,则可能可以使用它。
  • 那么为什么不使用组合框呢? (顺便说一句,内部创建了一个单独的表单)
  • 组合框的下拉菜单本身并不是一个控件。您不会在工具箱中找到它,这类窗口在设计时表现不佳,因为它们也会“伸出”设计表面。它们是顶级窗口。 ContextMenuStrip 就是一个很好的例子。还有一个你知道的,Form。让它看起来像是粘在一个控件(如组合框)上很容易做到,您使用 Show(owner) 重载,因此它位于顶部并订阅所有者的 LocationChanged 事件以使其保持粘着。

标签: c# winforms


【解决方案1】:

您想要一些父组件(如面板)无法完成的事情 我看到了一些选项:

(1) 所有者绘制一个包含复选框的组合框,参见 Codeprojects https://www.codeproject.com/Articles/31105/A-ComboBox-with-a-CheckedListBox-as-a-Dropdown

(2) 创建一个没有系统菜单和单个像素边框的小型浮动弹出窗体。在表单中,您可以放置​​一个 CheckListBox 停靠的 Fill 以允许过滤每个项目的复选框。您可以查看此主题 Is there a simple way to implement a Checked Combobox in WinForms

(3) 两种解决方案都有缺点。实际上,最好避免它,找到另一种方法来指定您的过滤器选项,重新设计您的 UI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多