Я не хочу, чтобы переключатель проверки переключателей C # Winform - PullRequest
0 голосов
/ 01 ноября 2018

Две радиокнопки могут программироваться.

имена HEX и ASCII

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

    void rdo_HEX_CheckedChanged(object sender, EventArgs e)
    {
        if (rdo_HEX.Checked)
        {
            try
            {                    
                textbox1.Text = AsciiToHex(textbox1.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        else
        {
            try
            {
                textbox1.Text = HexToAscii(textbox1.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

Но я не хочу, чтобы происходило проверено Изменить evnet При возникновении ошибки ...

если при проверке произошла ошибка, просто изменилась проверка переключателя и текст остался.

Например,

Первый текст - «ABCD», проверяется ASCII, и он конвертируется в «41424344», если установлен переключатель HEX.

И «4142434» конвертируется в Ascii, возникает ошибка, поэтому текст «4142434», но установлен переключатель ASCII.

Таким образом, пользователь должен проверить переключатель HEX '4142434' преобразовать в '34313432343334'

Я не хочу этого ... Я не хочу менять отмеченный переключатель при возникновении ошибки.

Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Просто установите проверенный после отключения CheckChanged

void rdo_HEX_CheckedChanged(object sender, EventArgs e)
{
    if (rdo_HEX.Checked)
    {
        try
        {                    
            textbox1.Text = AsciiToHex(textbox1.Text);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            rdo_HEX.CheckedChanged -= rdo_HEX_CheckedChanged;
            rdo_HEX.Checked = false;
            rdo_HEX.CheckedChanged += rdo_HEX_CheckedChanged;
        }
    }
    else
    {
        try
        {
            textbox1.Text = HexToAscii(textbox1.Text);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            rdo_HEX.CheckedChanged -= rdo_HEX_CheckedChanged;
            rdo_HEX.Checked = true;
            rdo_HEX.CheckedChanged += rdo_HEX_CheckedChanged;
        }
    }
}
0 голосов
/ 01 ноября 2018

Если я вас правильно понимаю, вы не хотите оставлять переключатель включенным в случае возникновения ошибки. Я не вижу реализации на обеих кнопках здесь, я просто вижу одну из них. Так что вам придется повторить это для вашей кнопки ASCII.

    void rdo_HEX_CheckedChanged(object sender, EventArgs e)
    {
        if (rdo_HEX.Checked)
        {
            try
            {
                textbox1.Text = AsciiToHex(textbox1.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                rdo_HEX.Checked = false;
            }
        }
        else
        {
            try
            {
                textbox1.Text = HexToAscii(textbox1.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...