如何防止第一次在C#中运行事件

时间:2016-03-23 11:20:58

标签: c#

我有一个像这样的事件的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 = "گاو شیری";
    }

我该怎么办?

2 个答案:

答案 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 = "گوساله";
        }
    }