非モーダルな.netOpenFileDialogを作成/作成することは可能ですか?メインダイアログにUI要素があり、ユーザーが押すために常に使用可能である必要があります。
maxfridbe
質問する
5696 次
4 に答える
7
いいえ、OpenFileDialogとSaveFileDialogはどちらも本質的にモーダルであるFileDialogから派生しているため、(私が知る限り)どちらの非モーダルバージョンも作成する方法はありません。
于 2009-01-25T23:15:25.373 に答える
6
スレッドを作成し、スレッドに OpenFileDialog をホストさせることができます。サンプルコードには同期が欠けていますが、動作します。
public partial class Form1 : Form
{
OFDThread ofdThread;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ofdThread = new OFDThread();
ofdThread.Show();
}
}
public class OFDThread
{
private Thread t;
private DialogResult result;
public OFDThread()
{
t = new Thread(new ParameterizedThreadStart(ShowOFD));
t.SetApartmentState(ApartmentState.STA);
}
public DialogResult DialogResult { get { return this.result; } }
public void Show()
{
t.Start(this);
}
private void ShowOFD(object o)
{
OpenFileDialog ofd = new OpenFileDialog();
result = ofd.ShowDialog();
}
}
このコードを使用すると、UI スレッドでイベントを発生させる何かを追加して (呼び出しには注意してください!)、イベントがいつ完了したかを知ることができます。ダイアログの結果にアクセスするには、
DialogResult a = ofdThread.DialogResult
UIスレッドから。
于 2009-07-23T21:33:39.513 に答える
1
私は少し遅れていることを知っていますが、ボーダーレス、透明、または表示境界外の新しいフォームを作成し、そのウィンドウを変更するファイル ダイアログを表示することができます。
于 2011-03-22T13:45:21.540 に答える