Button上的FlatStyle会影响UseMnemonic

时间:2010-10-14 09:56:52

标签: c# button

我正在尝试在按钮上启用UseMnemonic,以便为我显示amprasand(&)。除非我将flatStyle按钮设置为System(所有其他平面样式都很好),否则工作正常。

使用相同的flatStyle可以很好地处理标签,这似乎是按钮特有的。

有没有人知道为什么会发生这种情况或背后的方式?

目前我唯一能想到的就是忽略UseMnemonic并添加额外的& amp;如果找到了。

另外一些奇怪的是,有时候&被替换为下划线(_)但我无法随意重现...

远非最有效的代码,而是我一起来测试这个:

  public Form1()
    {
        InitializeComponent();
        this.label1.Text = "hello & goodbye";
        this.button1.Text = "1&2";
        this.label3.Text = this.button1.UseMnemonic.ToString();
        this.label4.Text = this.button1.FlatStyle.ToString();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        switch (count)
        { 
            case 0:
            case 1:
                this.label1.UseMnemonic = this.button1.UseMnemonic = false;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.System;
                count = 2;
                break;
            case 2:
                this.label1.UseMnemonic = this.button1.UseMnemonic = false;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.Flat;
                count = 3;
                break;
            case 3:
                this.label1.UseMnemonic = this.button1.UseMnemonic = false;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.Popup;
                count = 4;
                break;
            case 4:
                this.label1.UseMnemonic = this.button1.UseMnemonic = false;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.Standard;
                count = 5;
                break;
            case 5:
                this.label1.UseMnemonic = this.button1.UseMnemonic = true;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.System;
                count = 6;
                break;
            case 6:
                this.label1.UseMnemonic = this.button1.UseMnemonic = true;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.Flat;
                count = 7;
                break;
            case 7:
                this.label1.UseMnemonic = this.button1.UseMnemonic = true;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.Popup;
                count = 8;
                break;
            case 8:
                this.label1.UseMnemonic = this.button1.UseMnemonic = true;
                this.label1.FlatStyle = this.button1.FlatStyle = FlatStyle.Standard;
                count = 1;
                break;   
        }


        this.label3.Text = this.button1.UseMnemonic.ToString();
        this.label4.Text = this.button1.FlatStyle.ToString();

1 个答案:

答案 0 :(得分:1)

不确定我是否跟进。但要让“&”出现,你必须加倍。修正:

        this.button1.Text = "1&&2";