可以编程两个单选按钮。
命名十六进制和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发生错误时...
如果在checkChange时发生错误,则单选按钮的检查将被更改并保留文本。
例如
第一个文本为'ABCD',并检查ASCII,当选中十六进制单选按钮时,它将转换为'41424344'。
并且'4142434'转换为Ascii,发生错误,因此文本为'4142434',但选中了ASCII单选按钮。.
因此,用户选中十六进制单选按钮'4142434'会转换为'34313432343334'
我不想要这个...我不想在发生错误时更改选中的单选按钮。
我该怎么办?
答案 0 :(得分:0)
如果我对您的理解是正确的,则不要一直选中该单选按钮,以防出现错误。我在这里没有看到两个按钮的实现,只是看到了其中一个。因此,您必须将其复制为您的ascii单选按钮。
for(let i = 0; i< 5; i++){
this.items[1].items[i] = {
label: 'R'+i,
items: [] as MenuItem[]
}
for(let j = 0; j< 4; j++){
(this.items[1].items[i] as MenuItem).items[j] = {// error at this line
label: 'A'+j,
items: [] as MenuItem[]
}
}
}
答案 1 :(得分:0)
只需在禁用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;
}
}
}