重点!!!若 当前窗体this的TopMost是false,可以设置为true,这样打开的对话框就是最顶层
/// <summary>
/// 设置窗体TopMost,缺点和其他程序ide有冲突。例如VS有断点的调试会卡死
/// </summary>
/// <param name="form"></param>
public void SetFormTopMost(Form form)
{if (form == null){ return; }form.TopMost = true;
}
在C#中,如果你想要让 OpenFileDialog 始终显示在所有其他窗口的顶部,你可以使用 TopMost 属性。但是,OpenFileDialog 并没有直接暴露 TopMost 属性,因为它不是一个窗体(Form)对象。
不过,你可以通过一些间接的方法来实现 OpenFileDialog 的最顶层显示,例如创建一个具有 TopMost 属性的窗体,并在该窗体上显示 OpenFileDialog。下面是一个示例
using System;
using System.Windows.Forms;namespace TopMostOpenFileDialog
{public partial class MainForm : Form{public MainForm(){InitializeComponent();}private void OpenFileButton_Click(object sender, EventArgs e){using (OpenFileDialog openFileDialog = new OpenFileDialog()){// 设置对话框属性openFileDialog.Title = "Open File";openFileDialog.Filter = "All Files (*.*)|*.*";// 显示对话框DialogResult result = openFileDialog.ShowDialog(this);if (result == DialogResult.OK){// 处理所选择的文件string selectedFileName = openFileDialog.FileName;MessageBox.Show($"You selected: {selectedFileName}");}}}}
}
重点!!!若设置TopMost为true导致卡死, 可能和ide冲突,可以设置一次,在VS其他ide调试中若设置TopMost=true,会导致vs获取不到最顶层,进不去断点所以可以设置一次,代码如下:
/// <summary>
/// 设置窗体TopMost一次
/// </summary>
/// <param name="form"></param>
public void SetFormTopMostOnce(Form form)
{if (form == null){ return; }form.TopMost = true;form.TopMost = false;
}
OpenFileDialog openFileDialog1 = new OpenFileDialog
SetFormTopMostOnce(this.ParentForm);
DialogResult dr = openFileDialog1.ShowDialog();