根据您的澄清评论,听起来您要么想要一些实用程序类或工厂类。也许像下面这样:
public interface IFileOpener
{
public bool PresentFileOpenDialogToUser();
public string RequestedFilePath { get; }
}
public class DefaultFileOpener : IFileOpener
{
private string filePath = default(string);
public bool PresentFileOpenDialogToUser()
{
OpenFileDialog ofd = new OpenFileDialog();
DialogResult dr = ofd.ShowDialog();
if (dr == DialogResult.Cancel)
{
this.filePath = default(string);
return false;
}
else
{
this.filePath = ofd.FileName;
return true;
}
}
public string RequestedFilePath
{
get
{
return this.filePath;
}
}
}
public class FileOpenerFactory
{
public static IFileOpener CreateFileOpener()
{
return new DefaultFileOpener();
}
}
并以您的形式:
private void btnOpenFile_Click(object sender, EventArgs e)
{
IFileOpener opener = FileOpenerFactory.CreateFileOpener();
if (opener.PresentFileOpenDialogToUser())
{
//do something with opener.RequestedFilePath;
}
}
你甚至可以用部分类做一些事情,所以在你的主要形式中你有类似的东西
private void btnOpenFile_Click(object sender, EventArgs e)
{
this.OpenMyFile();
}
在您的部分课程中,您有:
public partial class Form1
{
private void OpenMyFile()
{
IFileOpener opener = FileOpenerFactory.CreateFileOpener();
if (opener.PresentFileOpenDialogToUser())
{
//do something with opener.RequestedFilePath;
}
}
}
很多时候,使用部分类作为接口或重点功能的实现非常有用。