我想将SaveFileDialog设置在最上面。但正如你所知,没有财产。有没有其他方法可以在 SaveFileDialog 中设置 TopMost?
问问题
5233 次
4 回答
3
class ForegroundWindow : IWin32Window
{
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();
static ForegroundWindow obj = null;
public static ForegroundWindow CurrentWindow {
get {
if (obj == null)
obj = new ForegroundWindow();
return obj;
}
}
public IntPtr Handle {
get { return GetForegroundWindow(); }
}
}
SaveFileDialog dlg=new SaveFileDialog();
dlg.ShowDialog(ForegroundWindow.CurrentWindow);
于 2011-04-29T04:33:48.087 回答
0
我解决了这个参考布鲁诺的答案:)
我的代码是这样的...
public System.Windows.Forms.DialogResult ShowSave(System.Windows.Forms.SaveFileDialog saveFileDialog)
{
System.Windows.Forms.DialogResult result = new System.Windows.Forms.DialogResult();
Window win = new Window();
win.ResizeMode = System.Windows.ResizeMode.NoResize;
win.WindowStyle = System.Windows.WindowStyle.None;
win.Topmost = true;
win.Visibility = System.Windows.Visibility.Hidden;
win.Owner = this.shell;
win.Content = saveFileDialog;
win.Loaded += (s, e) =>
{
result = saveFileDialog.ShowDialog();
};
win.ShowDialog();
return result;
}
于 2011-01-17T02:26:08.193 回答
0
我只能想到一个黑客来做到这一点。制作一个新表单并将其设置为 TopMost。当你想显示对话框时,从它调用:
Form1.cs
private void Form1_Load(object sender, EventArgs ev)
{
var f2 = new Form2() { TopMost = true, Visible = false };
var sv = new SaveFileDialog();
MouseDown += (s, e) =>
{
var result = f2.ShowSave(sv);
};
}
Form2.cs
public DialogResult ShowSave(SaveFileDialog saveFileDialog)
{
return saveFileDialog.ShowDialog(this);
}
于 2011-01-12T10:39:22.600 回答
0
作为任何类型的 FileDialog 的更通用的 WPF-ish:
public static class ModalFileDialog
{
/// <summary>
/// Open this file dialog on top of all other windows
/// </summary>
/// <param name="fileDialog"></param>
/// <returns></returns>
public static bool? Show(Microsoft.Win32.FileDialog fileDialog)
{
Window win = new Window();
win.ResizeMode = System.Windows.ResizeMode.NoResize;
win.WindowStyle = System.Windows.WindowStyle.None;
win.Topmost = true;
win.Visibility = System.Windows.Visibility.Hidden;
win.Content = fileDialog;
bool? result = false;
win.Loaded += (s, e) =>
{
result = fileDialog.ShowDialog();
};
win.ShowDialog();
return result;
}
}
于 2018-12-14T14:25:38.153 回答