Подтвердить что ты не робот

ToggleButton в С# WinForms

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

4b9b3361

Ответ 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";
        }
    }