为ToolstripLabel设置UseMnemonic

时间:2013-10-15 23:21:28

标签: c# .net winforms label toolstrip

我有一个ToolstripLabel,我想将UseMnemonic设置为false。但它没有这个属性。有没有办法做到这一点?

我尝试将其转换为标签,但它无效。

1 个答案:

答案 0 :(得分:6)

你无法达到它。基本缺陷是标签的Text使用缺少HidePrefix选项的TextFormatFlags值进行渲染。无法更改该值,它隐藏在内部代码中。

解决方法是使用您自己的渲染器并通过在渲染之前更改文本来解决问题。看起来像这样:

    public Form1() {
        InitializeComponent();
        toolStrip1.Renderer = new MyRenderer();
    }

    private class MyRenderer : ToolStripProfessionalRenderer {
        protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e) {
            if (e.Item is ToolStripItem) e.Text = e.Text.Replace("&", "&&");
            base.OnRenderItemText(e);
        }
    }