web-dev-qa-db-ja.com

C#WinFormsのトグルボタン

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

61
Jon Tackabury

最終的に、OnPaintイベントとOnBackgroundPaintイベントをオーバーライドし、必要なとおりに手動でボタンを描画しました。それはかなりうまくいきました。

1
Jon Tackabury

CheckBoxを使用し、その外観をButtonに設定するだけです。

CheckBox checkBox = new System.Windows.Forms.CheckBox(); 
checkBox.Appearance = System.Windows.Forms.Appearance.Button; 
135
Simon Sabin

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

10

これはどう?

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

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

お役に立てれば ;)

5
JRO

thersはトグルボタンを作成する簡単な方法です。 vs2010でテストします。それは完璧だ。

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

tbtnCross.CheckOnClick = true;

OR

    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;

    }
4
legendJSLC

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

2
C. Dragon 76

これは私の簡単なコードです

private void button2_Click(object sender, EventArgs e)
    {
        if (button2.Text == "ON")
        {
            panel_light.BackColor = Color.Yellow; //symbolizes light turned on

            button2.Text = "OFF";
        }

        else if (button2.Text == "OFF")
        {
            panel_light.BackColor = Color.Black; //symbolizes light turned off

            button2.Text = "ON";
        }
    }
1
Anthony

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

0
HanClinto

ifコマンドを使用してステータスを確認し、トグルボタンとして動作させます

private void Protection_ON_OFF_Button_Click(object sender, EventArgs e)
        {

            if (FolderAddButton.Enabled == true)
            {
                FolderAddButton.Enabled = false;
            }
            else
            {
                FolderAddButton.Enabled = true;
            }
        }
0
H2Five

Jon Tackaburyでは、MetroUI Frameworkを使用してトグルボタンを使用できます。 Windows 8のように異なるUIに見える他の多くのコントロールを提供します。

少なくとも一度は試すことができます。

使い方はこれをご覧ください https://www.youtube.com/watch?v=Ryxew9cgkZA

これがお役に立てば幸いです。

0
Nitesh