开发者

UseMnemonic is being affected by FlatStyle on a Button

I'm trying to enable UseMnemonic on a button so that the amprasand (&) will show up for me. The works fine unless I set the buttons flatStyle to System (all other flatstyles are fine).

Labels work fine with the same flatStyle, this seems to be specific to buttons.

Does any one know why this happens or a way behind it?

At the moment the only thing I can think of is ignore the UseMnemonic and add and extra & if one is found.

Also something else weird is that sometimes the & gets replaced with an underscore (_) b开发者_开发知识库ut I can't yet reproduce this at will...

Far from the most effective code but something I through together to test this:

  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();


Not sure I follow. But to get the ampersand to show up, you have to double it. Fix:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜