VB.Net Show和ShowDialog的区别

本文详细介绍了模式和无模式窗体的概念及其应用。模式窗体必须关闭或隐藏后才能继续使用应用程序的其他部分,适用于显示重要消息的场景;而无模式窗体允许用户在不同窗体间切换焦点,适合于不中断用户工作的场景。

        窗体和对话框要么是有模式的,要么是无模式的。
        “模式”窗体或对话框必须关闭或隐藏,然后您才能继续使用应用程序的其余部分。显示重要消息的对话框应始终是有模式的。模式对话框的一个示例是 Visual Studio 中的“关于”对话框。MessageBox是您可以使用的一个模式窗体。有模式对话框显示出来以后,那么开始打开的窗体或对话框就不能再获得焦点了。
        “无模式”窗体让您在此窗体与另一窗体之间变换焦点,而不必关闭初始窗体。用户在该窗体显示的同时可继续在任何应用程序的其他位置工作。例如:文本编辑软件里面的搜索功能,就是一个无模式的,因为搜索对话框出来以后,还可以操作编辑本文,即它不影响其他窗体获得焦点。

        Form1.ShowDialog()是有模式的,和我们平常看的对话框差不多,如果你不关闭这个对话框,就不能继续往下操作。

        Form1.Show()是无模式的。

        注意   如果窗体显示为有模式,则在关闭该对话框之前,不执行 ShowDialog 方法后面的代码。但是,当窗体显示为无模式时,那么该窗体显示之后,会立刻执行 Show 方法后面的代码。

VB.NETWPF中,如果你希望创建一个显示对话框并在用户未进行交互(如点击确定按钮)一段时间后自动关闭,你可以使用`System.Windows.Threading.DispatcherTimer`配合事件处理来实现。首先,在XAML中添加一个定时器控件: ```xml <Window x:Class="YourNamespace.YourWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="DialogExample" Height="300" Width="300"> <Grid> <Button Content="Show Dialog" Click="ShowDialog_Click"/> <DispatcherTimer Interval="5000".Tick="Timer_Tick"/> </Grid> </Window> ``` 然后在后端代码(例如`MainWindow.xaml.cs`)中编写事件处理方法: ```csharp using System.Windows; public partial class MainWindow : Window { private DispatcherTimer _timer; public MainWindow() { InitializeComponent(); } private void ShowDialog_Click(object sender, RoutedEventArgs e) { // 创建并显示对话框 var dialog = new YourCustomDialog(); dialog.ShowDialog(this); // 开始计时器 _timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(5) }; _timer.Start(); } private void Timer_Tick(object sender, EventArgs e) { // 如果对话框仍然打开,就关闭它 if (this.DialogResult == DialogResult.None) this.Close(); else _timer.Stop(); // 取消计时如果对话框已关闭 } } ``` 这里,我们创建了一个`DispatcherTimer`在5秒后触发`Tick`事件。当`Tick`发生时检查对话框是否已关闭,如果未关闭则关闭窗口。这样就能实现在5秒后无操作自动关闭对话框的效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值