首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以在ToolStripSplitButton上使用WinForms中的检查状态吗?

我可以在ToolStripSplitButton上使用WinForms中的检查状态吗?
EN

Stack Overflow用户
提问于 2016-02-23 06:25:44
回答 2查看 1.4K关注 0票数 2

有没有一种方法可以让ToolStripSplitButton上有一个检查状态?我希望有一个带有选中属性的ToolStripButton,以确定是否在应用程序的窗口中显示了覆盖。我的用户希望有直接的交互,以控制覆盖的不透明度,并这样做,我设想有一个拆分按钮,其中次要按钮打开一个滑块,以控制不透明度。(当然,这不是标准的功能,但我有信心能够将这些功能组合在一起)。

但是,ToolStripSplitButton没有选中的属性,所以我不能直接这样做。我尝试使用一个标准的ToolStripButton,它旁边有一个单独的ToolStripSplitButton,它的DropDownButtonWidth = 11,边距= -5,1,0,2,所以看起来它是属于ToolStripButton的。它看起来很好,但是要完成它们是一个单一按钮的错觉,我需要让它们都用相同的VisualStyles.PushButtonState绘制--所以当鼠标在它们上面时,它们都会变热。

首先,我尝试使用两个按钮上的MouseEnter和MouseLeave事件来尝试更改另一个按钮的背景色,但没有效果。然后,我尝试使用每个按钮的each事件来使用ButtonRenderer.DrawButton呈现它们,并使用PushButtonState = Hot,但这似乎也不起作用,而且变得非常混乱。看来一定有更好的办法!

是否有一个简单的,或至少是一个实际的解决办法?

编辑:我想要的效果是这样的:

EN

Stack Overflow用户

发布于 2016-02-23 11:29:55

我建议您创建自己的UserControl并将其用作ToolStripItem

代码语言:javascript
运行
复制
toolStripMenuItem.DropDownItems.Add(new ToolStripControlHost(new OverlayControl()));

下面是OverlayControl的一个简单示例,它是从您的描述中推导出来的(我建议您使用Designer创建一个真正的UserControl )。

代码语言:javascript
运行
复制
public class OverlayControl : UserControl
{
    private readonly CheckBox _checkBox = new CheckBox();
    private readonly TrackBar _trackBar = new TrackBar();

    public ToolStripExtended()
    {
        _checkBox.Text = "Overlay";
        BackColor = SystemColors.Window;
        _checkBox.AutoSize = true;
        _trackBar.AutoSize = true;
        var flowLayoutPanel = new FlowLayoutPanel {AutoSize = true, AutoSizeMode = AutoSizeMode.GrowAndShrink};
        flowLayoutPanel.Controls.AddRange( new Control[] { _checkBox, _trackBar });
        Controls.Add(flowLayoutPanel);
        AutoSize = true;
        AutoSizeMode = AutoSizeMode.GrowAndShrink;
        PerformLayout();
    }
} 
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35570331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档