明確なコメントに基づくと、ユーティリティクラスまたはファクトリクラスのいずれかが必要なようです。おそらく以下のようなものです:
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;
}
}
}
多くの場合、インターフェイスまたはフォーカスされた機能の実装として部分クラスを使用すると非常に便利です。