C#WinFormsでトグルボタンを作成することは可能ですか? CheckBoxコントロールを使用して、Appearanceプロパティを「ボタン」に設定できることは知っていますが、見た目は正しくありません。押されたとき、平らではなく、沈んで見えるようにしたい。何かご意見は?
最終的に、OnPaintイベントとOnBackgroundPaintイベントをオーバーライドし、必要なとおりに手動でボタンを描画しました。それはかなりうまくいきました。
CheckBox
を使用し、その外観をButton
に設定するだけです。
CheckBox checkBox = new System.Windows.Forms.CheckBox();
checkBox.Appearance = System.Windows.Forms.Appearance.Button;
FlatStyleプロパティを確認してください。 「システム」に設定すると、チェックボックスが私の環境で沈みます。
これはどう?
System.Windows.Formsが参照されていると仮定します。
var cbtnToggler = new CheckBox();
cbtnToggler.Appearance = Appearance.Button;
cbtnToggler.TextAlign = ContentAlignment.MiddleCenter;
cbtnToggler.MinimumSize = new Size(75, 25); //To prevent shrinkage!
お役に立てれば ;)
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;
}
ToolStripContainerでホストすることを気にしない場合は、ToolStripButtonコントロールも検討できます。押された状態と押されていない状態をネイティブにサポートできると思います。
これは私の簡単なコードです
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";
}
}
カスタムグラフィックスとPictureBoxを使用していつでも独自のボタンをコーディングできますが、ユーザーのWindowsテーマと必ずしも一致するわけではありません。
ifコマンドを使用してステータスを確認し、トグルボタンとして動作させます
private void Protection_ON_OFF_Button_Click(object sender, EventArgs e)
{
if (FolderAddButton.Enabled == true)
{
FolderAddButton.Enabled = false;
}
else
{
FolderAddButton.Enabled = true;
}
}
Jon Tackaburyでは、MetroUI Frameworkを使用してトグルボタンを使用できます。 Windows 8のように異なるUIに見える他の多くのコントロールを提供します。
少なくとも一度は試すことができます。
使い方はこれをご覧ください https://www.youtube.com/watch?v=Ryxew9cgkZA
これがお役に立てば幸いです。