重点!!!若 当前窗体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();