C# WinForms でトグル ボタンを作成することは可能ですか? CheckBox コントロールを使用して、その Appearance プロパティを "Button" に設定できることは知っていますが、正しく表示されません。押したときに平らではなく、くぼんだように見せたいです。何かご意見は?
11 に答える
CheckBox
a を使用して、その外観を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!
お役に立てれば ;)
これらは、トグル ボタンを作成する簡単な方法です。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;
}
ToolStripContainer でホストすることを気にしない場合は、ToolStripButton コントロールを検討することもできます。押された状態と押されていない状態をネイティブにサポートできると思います。
OnPaint および OnBackgroundPaint イベントをオーバーライドし、必要に応じてボタンを手動で描画することになりました。それはかなりうまくいきました。
カスタム グラフィックスと PictureBox を使用して独自のボタンをいつでもコーディングできますが、ユーザーの Windows テーマと必ずしも一致するとは限りません。