我如何调用其他事件方法?

时间:2014-01-19 20:03:51

标签: c# methods event-handling save menustrip

private void save(object sender, EventArgs e)
{
    if (File.Exists(fileLabel.Text))
    {
        // this will save in the debug folder unfortunately
        FileStream outputFileStream = new FileStream(fileLabel.Text, FileMode.Create, FileAccess.Write);
        StreamWriter writer = new StreamWriter(outputFileStream);

        // writing block (too long code)


        writer.Close();
        outputFileStream.Close();
    }

    else
    {
        saveAs(); // no overload
    }
}

所以我要做的是,如果用户按下Save,他们将在没有对话框的情况下保存文件。此代码检查文件是否存在以进行保存。如果它不存在,它将重定向到saveAsDialog方法。

private void saveAs(object sender, EventArgs e)
{
    // code is similar (it works fine if user clicks the menu strip)
}

但是,当我调用saveAs()方法时,它不会超载。现在我从来没有在我的Form1课程中调用事件处理程序,所以我不知道如何使用它。所有处理程序都来自双击表单设计。

那么,如果我希望它与用户从菜单条中选择它一样,那么我必须在saveAs()方法调用上放置哪些参数?

4 个答案:

答案 0 :(得分:3)

尝试此操作来触发您的活动:

saveAs(this, EventArgs.Empty)

答案 1 :(得分:3)

传递保存参数:

saveAs(sender, e);

答案 2 :(得分:2)

在一个地方使用方法建议将代码重构为可在任何地方使用的常用方法。

答案 3 :(得分:2)

使用Method事件

code撰写save
void saveOrSaveAs()
{
  if (File.Exists(fileLabel.Text))
  {
    // this will save in the debug folder unfortunately
    FileStream outputFileStream = new FileStream(fileLabel.Text, FileMode.Create, FileAccess.Write);
    StreamWriter writer = new StreamWriter(outputFileStream);

    // writing block (too long code)

    writer.Close();
    outputFileStream.Close();
  }
  else
  {
    saveAs(); //If You have already written code for saveAs() method.
  }
}

Call这个方法events

private void save(object sender, EventArgs e)
{
  saveOrSaveAs();
}

call method再次saveAs Event

private void saveAs(object sender, EventArgs e)
{
  saveOrSaveAs();
}