ToggleButton в C# WinForms


можно ли создать переключатель в C# WinForms? Я знаю, что вы можете использовать элемент управления CheckBox и установить его свойство внешнего вида на "кнопку", но это не выглядит правильно. Я хочу, чтобы при нажатии он казался затонувшим, а не плоским. Есть мысли?

11 57

11 ответов:

вы можете просто использовать CheckBox и установите его внешний вид в Button:

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

Проверьте свойство FlatStyle. Установка его в "систему" делает флажок утопленным в моей среде.

Как насчет этого?

если у вас есть система.Окна.Формы, на которые ссылается.

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.