78

C# WinForms でトグル ボタンを作成することは可能ですか? CheckBox コントロールを使用して、その Appearance プロパティを "Button" に設定できることは知っていますが、正しく表示されません。押したときに平らではなく、くぼんだように見せたいです。何かご意見は?

4

11 に答える 11

159

CheckBoxa を使用して、その外観をButton次のように設定できます。

CheckBox checkBox = new System.Windows.Forms.CheckBox(); 
checkBox.Appearance = System.Windows.Forms.Appearance.Button; 
于 2010-09-23T09:21:57.133 に答える
11

FlatStyle プロパティを確認してください。「システム」に設定すると、私の環境ではチェックボックスが沈みます。

于 2008-11-11T21:10:14.120 に答える
5

これはどう?

System.Windows.Forms が参照されていると仮定します。

var cbtnToggler = new CheckBox();
cbtnToggler.Appearance = Appearance.Button;
cbtnToggler.TextAlign = ContentAlignment.MiddleCenter;
cbtnToggler.MinimumSize = new Size(75, 25); //To prevent shrinkage!

お役に立てれば ;)

于 2015-08-21T12:52:27.363 に答える
5

これらは、トグル ボタンを作成する簡単な方法です。vs2010でテストしました。パーフェクトだ。

ToolStripButton には、"Checked" プロパティと "CheckOnClik" プロパティがあります。トグルボタンとして機能するために使用できます

tbtnCross.CheckOnClick = true;

また

    tbtnCross.CheckOnClick = false;
    tbtnCross.Click += new EventHandler(tbtnCross_Click);
    .....

    void tbtnCross_Click(object sender, EventArgs e)
    {
        ToolStripButton target = sender as ToolStripButton;
        target.Checked = !target.Checked;
    }

また、次のようにトグル ボタン リストを作成することもできます。

        private void Form1_Load(object sender, EventArgs e)
    {
        arrToolView[0] = tbtnCross;
        arrToolView[1] = tbtnLongtitude;
        arrToolView[2] = tbtnTerrain;
        arrToolView[3] = tbtnResult;
        for (int i = 0; i<arrToolView.Length; i++)
        {
            arrToolView[i].CheckOnClick = false;
            arrToolView[i].Click += new EventHandler(tbtnView_Click);
        }
        InitTree();
    }

    void tbtnView_Click(object sender, EventArgs e)
    {
        ToolStripButton target = sender as ToolStripButton;
        if (target.Checked) return;
        foreach (ToolStripButton btn in arrToolView)
        {
                btn.Checked = false;
                //btn.CheckState = CheckState.Unchecked;
        }
        target.Checked = true;
        target.CheckState = CheckState.Checked;

    }
于 2011-12-10T14:52:06.357 に答える
4

ToolStripContainer でホストすることを気にしない場合は、ToolStripButton コントロールを検討することもできます。押された状態と押されていない状態をネイティブにサポートできると思います。

于 2008-11-11T21:14:01.243 に答える
0

OnPaint および OnBackgroundPaint イベントをオーバーライドし、必要に応じてボタンを手動で描画することになりました。それはかなりうまくいきました。

于 2009-01-06T13:36:34.050 に答える
0

カスタム グラフィックスと PictureBox を使用して独自のボタンをいつでもコーディングできますが、ユーザーの Windows テーマと必ずしも一致するとは限りません。

于 2008-11-11T21:02:24.993 に答える