如何调用其他事件方法


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() 方法调用上放置哪些参数?

尝试此操作以触发事件:

saveAs(this, EventArgs.Empty)

传递保存参数:

saveAs(sender, e);

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

使用save事件的code编写Method

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.
  }
}

并在两个eventsCall此方法

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

再次call这个method在你的saveAs Event.

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

相关内容

  • 没有找到相关文章

最新更新