ToggleButton в C # WinForms - PullRequest
       40

ToggleButton в C # WinForms

60 голосов
/ 11 ноября 2008

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

Ответы [ 11 ]

129 голосов
/ 23 сентября 2010

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

CheckBox checkBox = new System.Windows.Forms.CheckBox(); 
checkBox.Appearance = System.Windows.Forms.Appearance.Button; 
10 голосов
/ 12 ноября 2008

Проверьте свойство FlatStyle. Установка его в «Системный» делает флажок затонувшим в моей среде.

5 голосов
/ 21 августа 2015

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

Предполагается, что у вас есть ссылки на System.Windows.Forms.

var cbtnToggler = new CheckBox();
cbtnToggler.Appearance = Appearance.Button;
cbtnToggler.TextAlign = ContentAlignment.MiddleCenter;
cbtnToggler.MinimumSize = new Size(75, 25); //To prevent shrinkage!

Надеюсь, это поможет;)

4 голосов
/ 10 декабря 2011

thers - простой способ создать кнопку переключения. Я проверяю это в vs2010. Это прекрасно.

ToolStripButton имеет свойство «Проверено» и свойство «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;

    }
2 голосов
/ 12 ноября 2008

Вы также можете рассмотреть элемент управления ToolStripButton, если не возражаете против размещения его в ToolStripContainer. Я думаю, что он может изначально поддерживать нажатые и невыжатые состояния.

1 голос
/ 22 июля 2017

Это мои простые коды. Надеюсь, это поможет вам

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";
        }
    }
1 голос
/ 06 января 2009

В итоге я переопределил события OnPaint и OnBackgroundPaint и вручную нарисовал кнопку так, как мне нужно. Это сработало довольно хорошо.

0 голосов
/ 06 сентября 2017

Ну, Джон Тэкабери, вы можете использовать MetroUI Framework , чтобы использовать кнопку переключения. Он предоставляет множество других элементов управления, которые выглядят как пользовательский интерфейс, как в Windows 8.

Вы можете попробовать его хотя бы один раз.

Как использовать, просто посмотрите, https://www.youtube.com/watch?v=Ryxew9cgkZA

Надеюсь, это полезно.

0 голосов
/ 01 марта 2017

используйте команду if для проверки состояния и запуска в качестве переключателя

private void Protection_ON_OFF_Button_Click(object sender, EventArgs e)
        {

            if (FolderAddButton.Enabled == true)
            {
                FolderAddButton.Enabled = false;
            }
            else
            {
                FolderAddButton.Enabled = true;
            }
        }
0 голосов
/ 26 декабря 2013

Изменение внешнего вида 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();
        }
    }

Это очень просто, но работает.

Предупреждение: Это будет хорошо работать с кнопками, которые время от времени используются (например, настройки), значение счетчика в int / long может быть перегружено при использовании больше, чем его емкость без закрытие процесса приложения. (Проверьте диапазоны типов данных: http://msdn.microsoft.com/en-us/library/s3f49ktz.aspx)

Благая весть: Если вы используете приложение, которое не предназначено для использования 24/7 круглый год, я думаю, что это полезно. Важно то, что когда процесс приложения завершится и вы запустите его снова, count сбросится до 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...