Messagebox出现两次C#
发布时间:2020-12-16 01:47:14 所属栏目:百科 来源:网络整理
导读:我有一个名为cmbSubjects的组合框.我的项目的目的是在测验竞赛中改变主题.我希望在更改所选项目时,如果在更改前组合框中有关于主题的未答复问题,则消息框应询问测验主机是否确定是否继续.如果他们回答“否”,则组合框应选择其先前选择的项目.我得到了这个代
我有一个名为cmbSubjects的组合框.我的项目的目的是在测验竞赛中改变主题.我希望在更改所选项目时,如果在更改前组合框中有关于主题的未答复问题,则消息框应询问测验主机是否确定是否继续.如果他们回答“否”,则组合框应选择其先前选择的项目.我得到了这个代码,但问题是如果quix master在消息框中选择NO,则消息框会出现两次.我发现原因(在从断点进入代码之后)是当消息框返回NO时,我的代码将组合框的选定值更改为其先前的值,这会触发cmbSubjects_SelectedIndexChanged事件.我尝试通过添加一个变量来修改代码,以计算消息框出现的次数以防止它.问题是它只在首次更改组合框的值后出现.下面的代码实际上是修改后的代码.谁能帮我这个?提前致谢. (我正在使用C#)
private void cmbSubjects_SelectedIndexChanged(object sender,EventArgs e) { if (pnlAvailable.Controls.Count != 0) { if (countMsg < 1) { DialogResult res = MessageBox.Show("There are still available questions. Are you sure you want to change the subject?","Changing subject...",MessageBoxButtons.YesNo,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1); if (res == DialogResult.Yes) { cmbIndex = cmbSubjects.SelectedIndex; countMsg = 0; switch (cmbSubjects.SelectedIndex) { case 0: subject = "life"; break; case 1: subject = "math"; break; case 2: subject = "physical"; break; case 3: subject = "technology"; break; case 4: subject = "vocational"; break; } GenQstBtns(); } else if (res == DialogResult.No) { countMsg = 1; cmbSubjects.SelectedIndex = cmbIndex; } } } } 解决方法
您可以使用
SelectionChangeCommitted活动.
因此,如果在以编程方式更改所选项目后使用此事件,则此事件将不会再次触发 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |