ToggleButton в C# WinForms
можно ли создать переключатель в C# WinForms? Я знаю, что вы можете использовать элемент управления CheckBox и установить его свойство внешнего вида на "кнопку", но это не выглядит правильно. Я хочу, чтобы при нажатии он казался затонувшим, а не плоским. Есть мысли?
11 ответов:
вы можете просто использовать
CheckBox
и установите его внешний вид вButton
:CheckBox checkBox = new System.Windows.Forms.CheckBox(); checkBox.Appearance = System.Windows.Forms.Appearance.Button;
Как насчет этого?
если у вас есть система.Окна.Формы, на которые ссылается.
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; }
вы также можете рассмотреть элемент управления ToolStripButton, если вы не возражаете разместить его в ToolStripContainer. Я думаю, что он может изначально поддерживать сжатые и несжатые состояния.
вы всегда можете закодировать свою собственную кнопку с пользовательской графикой и PictureBox, хотя это не обязательно будет соответствовать теме Windows ваших пользователей.
в итоге я переопределил события OnPaint и OnBackgroundPaint и вручную нарисовал кнопку точно так, как мне это нужно. Это сработало довольно хорошо.
используйте команду if для проверки состояния и позвольте работать как кнопка переключения
private void Protection_ON_OFF_Button_Click(object sender, EventArgs e) { if (FolderAddButton.Enabled == true) { FolderAddButton.Enabled = false; } else { FolderAddButton.Enabled = true; } }
Это мои простые коды я надеюсь, что это может помочь вам
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"; } }
Ну Джон Такабери вы можете использовать Основы MetroUI для использования кнопки переключения. Он предоставляет множество других элементов управления, которые выглядят по-разному UI так же, как windows 8.
вы можете попробовать это по крайней мере один раз.
Как использовать просто увидеть это,https://www.youtube.com/watch?v=Ryxew9cgkZA
Я надеюсь, что это полезно.
изменение внешнего вида флажка на кнопку даст вам трудности с настройками. Вы не можете изменить его размеры, потому что его размер зависит от размера вашего текста или изображения.
вы можете попробовать это: (инициализации графа переменная сначала к 1 / int count = 1)
private void settingsBtn_Click(object sender, EventArgs e) { count++; if (count % 2 == 0) { settingsPanel.Show(); } else { settingsPanel.Hide(); } }
это очень просто, но это работает.
предупреждение: это будет хорошо работать с кнопками, которые иногда используются (т. е. настройки), значение count в int / long может быть перегружен при использовании больше, чем это емкость без закрытия процесса приложения. (Проверьте диапазоны типов данных: http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx)
Хорошая Новость: если вы используете приложение, которое не предназначено для использования 24/7 круглый год, я думаю, что это полезно. Важно то, что когда процесс приложения закончился, и вы запустите его снова,графа будет сброшено до 1.