최상위 값을 설정하고 싶습니다. 내 SaveFileDialog. 그러나 아시다시피, 재산은 없습니다. SaveFileDialog에서 TopMost를 설정하는 다른 방법이 있습니까?어떻게 C#을 사용하여 SaveFileDialog에서 최상을 설정할 수 있습니까?
1
A
답변
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);
}
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;
}
2
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);
Form을 가장 많이 호출 할 수 있다고 생각합니다. – leppie
대화 상자가 이미 위쪽으로 튀어 나오지 않는 이유는 무엇입니까? –