我有一个像这样的事件的Combobox:
private void CowTypeSelect_SelectedIndexChanged(object sender, EventArgs e)
{
if (MessageBox.Show(" آیا مطمئن هستید","",
MessageBoxButtons.OKCancel,MessageBoxIcon.Warning) == DialogResult.OK)
{
NotGrazingradioButton.Checked = true;
if (CowTypeSelect.SelectedIndex == 0)
{
CowTypeDefaults.LactatingCow(this);
CowTypeVarlbl.Text = "گاو شیری";
}
else if (CowTypeSelect.SelectedIndex == 1)
{
CowTypeDefaults.DryCow(this);
CowTypeVarlbl.Text = "گاو خشک";
}
else if (CowTypeSelect.SelectedIndex == 2)
{
CowTypeDefaults.ReplacementHeifer(this);
CowTypeVarlbl.Text = "تلیسه جایگزین";
}
else
{
CowTypeDefaults.YoungCalf(this);
CowTypeVarlbl.Text = "گوساله";
}
}
}
但是我以加载形式为此combox设置了默认索引</ p>
现在的问题是,当我在打开messageBox之前运行程序显示冷杉时,有没有办法阻止逻辑如果不在第一次运行?
// -----
正如你所说,我改变了这样的代码:
bool FirstRun = true;
private void CowTypeSelect_SelectedIndexChanged(object sender, EventArgs e)
{
if (FirstRun == true)
{
FirstRun = false;
return;
}
if (MessageBox.Show("آیا مطمئن هستید؟", "",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
NotGrazingradioButton.Checked = true;
if (CowTypeSelect.SelectedIndex == 0)
{
CowTypeDefaults.LactatingCow(this);
CowTypeVarlbl.Text = "گاو شیری";
}
else if (CowTypeSelect.SelectedIndex == 1)
{
CowTypeDefaults.DryCow(this);
CowTypeVarlbl.Text = "گاو خشک";
}
else if (CowTypeSelect.SelectedIndex == 2)
{
CowTypeDefaults.ReplacementHeifer(this);
CowTypeVarlbl.Text = "تلیسه جایگزین";
}
else
{
CowTypeDefaults.YoungCalf(this);
CowTypeVarlbl.Text = "گوساله";
}
}
但现在问题是这些代码第一次没有运行,我需要它们运行:
NotGrazingradioButton.Checked = true;
if (CowTypeSelect.SelectedIndex == 0)
{
CowTypeDefaults.LactatingCow(this);
CowTypeVarlbl.Text = "گاو شیری";
}
我该怎么办?
答案 0 :(得分:3)
您在加载组合框后注册事件处理程序,或者在第一次运行时构建检查,如下所示:
private bool firstRun = true;
在你的方法中:
if (firstRun)
{
firstRun = false;
return;
}
答案 1 :(得分:2)
好像你不懂@Patrick Hofman的代码。
firstRun
变量指示该函数是否在第一次执行。
以下行表示首次执行该行,它会将firstRun
更改为false
并停止执行return;
行之后的代码。 (我已添加了一些评论,以便让您更清楚。)
// Put codes here if you want it to execute every time.
if (firstRun)
{
// Codes here execute at the first time only.
firstRun = false;
return;
}
//Codes here execute except the first time.
固定代码
第一次运行以下行
NotGrazingradioButton.Checked = true;
if (CowTypeSelect.SelectedIndex == 0)
{
CowTypeDefaults.LactatingCow(this);
CowTypeVarlbl.Text = "گاو شیری";
}
除了第一次之外,和if (MessageBox.Show(...))
之后的行
以下完整代码:
bool FirstRun = true;
private void CowTypeSelect_SelectedIndexChanged(object sender, EventArgs e)
{
if (FirstRun == true)
{
// Codes here execute at the first time only.
NotGrazingradioButton.Checked = true;
if (CowTypeSelect.SelectedIndex == 0)
{
CowTypeDefaults.LactatingCow(this);
CowTypeVarlbl.Text = "گاو شیری";
}
FirstRun = false;
return;
}
//Codes below execute except the first time.
if (MessageBox.Show("آیا مطمئن هستید؟", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
{
NotGrazingradioButton.Checked = true;
if (CowTypeSelect.SelectedIndex == 0)
{
CowTypeDefaults.LactatingCow(this);
CowTypeVarlbl.Text = "گاو شیری";
}
else if (CowTypeSelect.SelectedIndex == 1)
{
CowTypeDefaults.DryCow(this);
CowTypeVarlbl.Text = "گاو خشک";
}
else if (CowTypeSelect.SelectedIndex == 2)
{
CowTypeDefaults.ReplacementHeifer(this);
CowTypeVarlbl.Text = "تلیسه جایگزین";
}
else
{
CowTypeDefaults.YoungCalf(this);
CowTypeVarlbl.Text = "گوساله";
}
}