【问题标题】:I don't want radio button check change C# Winform我不想单选按钮检查更改 C# Winform
【发布时间】:2019-04-05 16:42:58
【问题描述】:

可以编程的两个单选按钮。

命名 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);
            }
        }
    }

但是我不想在发生checkedChange evnet的时候出现错误……

如果在checkedChange时出错,只是单选按钮检查是变化并保留文本。

例如,

第一个文本是'ABCD',检查ASCII并在检查HEX单选按钮时转换为'41424344'。

并且 '4142434' 转换为 Ascii,出现错误,所以文本是 '4142434' 但选中了 ASCII 单选按钮..

所以用户检查 HEX 单选按钮 '4142434' 转换为 '34313432343334'

我不想要这个...我不想在发生错误时更改选中的单选按钮。

我该怎么办?

【问题讨论】:

  • 您在 CheckChanged...你想达到什么目的?

标签: c# winforms radio-button


【解决方案1】:

在禁用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;
        }
    }
}

【讨论】:

    【解决方案2】:

    如果我对您的理解正确,您不希望保持选中单选按钮以防引发错误。我在这里没有看到两个按钮的实现,我只看到其中一个。所以你必须为你的 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);
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 1970-01-01
      • 2021-11-14
      • 2019-02-18
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多