Можно ли создать кнопку переключения в С# WinForms? Я знаю, что вы можете использовать элемент управления CheckBox и установить его свойство Appearance на "Button", но это выглядит неправильно. Я хочу, чтобы он казался погруженным, а не плоским, когда он был нажат. Любые мысли?
ToggleButton в С# WinForms
Ответ 1
Я закончил переопределять события OnPaint и OnBackgroundPaint и вручную рисовал кнопку точно так, как мне это нужно. Он работал очень хорошо.
Ответ 2
Вы можете просто использовать CheckBox
и установить его внешний вид на Button
:
CheckBox checkBox = new System.Windows.Forms.CheckBox();
checkBox.Appearance = System.Windows.Forms.Appearance.Button;
Ответ 3
Проверить свойство FlatStyle. Установка его в "Систему" делает флажок затоплен в моей среде.
Ответ 4
Как насчет этого?
Предполагая, что вы ссылаетесь на 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
thers - простой способ создания кнопки переключения. Я тестирую его в vs2010. Это прекрасно.
ToolStripButton имеет свойство "Проверено" и свойство "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;
}
Ответ 6
Вы также можете рассмотреть элемент управления ToolStripButton, если вы не возражаете против его размещения в ToolStripContainer. Я думаю, что он может поддерживать сжатые и сжатые состояния.
Ответ 7
Вы всегда можете создать собственную кнопку с пользовательской графикой и PictureBox, хотя она не обязательно будет соответствовать темой Windows ваших пользователей.
Ответ 8
используйте команду, чтобы проверить статус и позволить работать как кнопка переключения
private void Protection_ON_OFF_Button_Click(object sender, EventArgs e)
{
if (FolderAddButton.Enabled == true)
{
FolderAddButton.Enabled = false;
}
else
{
FolderAddButton.Enabled = true;
}
}
Ответ 9
Хорошо, Джон Такабири, вы можете использовать MetroUI Framework, чтобы использовать кнопку переключения. Он предоставляет множество других элементов управления, которые выглядят по-разному, как и окна 8.
Вы можете попробовать хотя бы один раз.
Как использовать только это, https://www.youtube.com/watch?v=Ryxew9cgkZA
Я надеюсь, что это будет полезно.
Ответ 10
Изменение внешнего вида CheckBox на Button приведет к затруднениям в настройках. Вы не можете изменить его размеры, потому что его размер зависит от размера вашего текста или изображения.
Вы можете попробовать следующее: (сначала инициализировать переменную count до 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)
Хорошая новость: Если вы используете приложение, которое не предназначено для использования круглый год круглый год, я думаю, что это полезно. Важно то, что когда процесс приложения завершился и вы снова запустите его, счетчик будет reset до 1.
Ответ 11
Это мои простые коды, надеюсь, это поможет вам.
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";
}
}