max*_*dbe 7 c# modal-dialog openfiledialog
是否可以创建/拥有非模态.net OpenFileDialog我在主对话框中有一个UI元素,总是需要用户按下.
您可以创建一个线程并让线程托管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();
}
}
Run Code Online (Sandbox Code Playgroud)
使用此代码,您可以添加一些内容来触发UI线程中的事件(小心调用!)以了解它们何时完成.您可以通过访问对话框的结果
DialogResult a = ofdThread.DialogResult
Run Code Online (Sandbox Code Playgroud)
来自您的UI线程.