4.11创建和管理有模式对话框
来源:互联网 发布:网络设计与管理华软 编辑:程序博客网 时间:2024/06/06 03:57
创建和管理有模式对话框
若要了解有关 Visual Studio 2017 RC 的最新文档,请参阅 Visual Studio 2017 RC 文档。
在创建模式对话框在 Visual Studio 时,您必须确保显示对话框中,同时禁用对话框中的父窗口,然后对话框中关闭后重新启用父窗口。 如果不这样做,可能会收到错误:"Microsoft Visual Studio 不能关闭,因为模式对话框处于活动状态。 关闭活动对话框,然后重试。"
有两种方法执行此操作。 建议的方法,如果您有 WPF 对话框中,是派生它从DialogWindow,然后调用ShowModal以显示对话框。 如果这样做,您不需要管理模式的父窗口的状态。
如果您的对话框不是 WPF 中,或者对于某些其他原因不能派生您的对话框类派生DialogWindow,则必须通过调用获取对话框中的父GetDialogOwnerHwnd自行和管理模式状态,通过调用EnableModeless参数为 0 (false) 在显示对话框中,并关闭该对话框之后调用该方法再次使用的参数 1 (true) 之前的方法。
创建对话框派生自 DialogWindow
创建一个名为的 VSIX 项目OpenDialogTest并添加一个名为的菜单命令OpenDialog。 有关如何执行此操作的详细信息,请参阅使用菜单命令创建扩展。
若要使用DialogWindow类,必须添加对下列程序集引用 (在框架选项卡的添加引用对话框中):
PresentationCore
PresentationFramework
WindowsBase
System.Xaml
在 OpenDialog.cs,添加以下
using
语句︰C#using Microsoft.VisualStudio.PlatformUI;
声明一个名为类TestDialogWindow派生的DialogWindow:
C#class TestDialogWindow : DialogWindow {. . .}
若要能够降至最低并最大化对话框中,将设置HasMaximizeButton和HasMinimizeButton为 true:
C#internal TestDialogWindow() { this.HasMaximizeButton = true; this.HasMinimizeButton = true; }
在OpenDialog.ShowMessageBox方法中,将现有代码替换为以下︰
C#TestDialogWindow testDialog = new TestDialogWindow(); testDialog.ShowModal();
生成并运行应用程序。 Visual Studio 的实验实例应显示。 在工具的实验实例中的菜单上,您应该看到名为命令调用 OpenDialog。 当您单击此命令时,你应看到对话框窗口。 您应能够降至最低并最大化窗口。
创建和管理一个对话框,不是派生自 DialogWindow
对于此过程中,您可以使用OpenDialogTest在具有相同的程序集引用的上一个过程中创建的解决方案。
将以下代码添加
using
声明︰C#using System.Windows; using Microsoft.Internal.VisualStudio.PlatformUI;
创建一个名为类TestDialogWindow2派生的窗口:
C#class TestDialogWindow2 : Window {. . .}
添加对私有引用IVsUIShell:
private IVsUIShell shell;
添加将该引用设置为一个构造函数IVsUIShell:
C#public TestDialogWindow2(IVsUIShell uiShell) { shell = uiShell; }
在OpenDialog.ShowMessageBox方法中,将现有代码替换为以下︰
C#IVsUIShell uiShell = (IVsUIShell)ServiceProvider.GetService(typeof(SVsUIShell)); TestDialogWindow2 testDialog2 = new TestDialogWindow2(uiShell); //get the owner of this dialog IntPtr hwnd; uiShell.GetDialogOwnerHwnd(out hwnd); testDialog2.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; uiShell.EnableModeless(0); try { WindowHelper.ShowModal(testDialog2, hwnd); } finally { // This will take place after the window is closed. uiShell.EnableModeless(1); }
生成并运行应用程序。 在工具菜单上,您应该看到名为命令调用 OpenDialog。 当您单击此命令时,你应看到对话框窗口。
- 4.11创建和管理有模式对话框
- MFC创建有模式对话框和无模式对话框
- 有模式对话框和无模式对话框
- 有模式和无模式对话框
- 模式对话框和无模式对话框的创建总结
- 如何创建和使用无模式对话框
- 如何创建和使用无模式对话框
- 向导模式对话框的创建和显示
- 创建和管理有状态 Web 应用程序
- 创建和管理有状态 Web 应用程序
- 创建无模式对话框
- 创建模式对话框
- 创建无模式对话框
- 非模式对话框创建
- MFC创建模式对话框
- 创建无模式对话框
- VC 模式对话框和非模式对话框的创建,销毁和区别
- VC 模式对话框和非模式对话框的创建,销毁和区别
- 4.10扩展属性、 任务列表、 输出和选项 Windows
- 使用Slf4j集成Log4j2构建项目日志系统解决方案
- 判断元素是否在屏幕中
- 程序异常分类及处理
- Unity 自定义字体消除警告版~
- 4.11创建和管理有模式对话框
- Java 集合系列02之 Collection架构
- spring batch
- Android UI 优化——使用HierarchyViewer工具
- 函数重载(函数多态)
- xxx不在sudoers文件中,此事将被报告(一个反面解决方案)
- android监听程序安装、卸载
- 利用JDBC批量处理语句
- LeetCode-101. Symmetric Tree(Java)