如何在页面呈现后立即执行方法
本文关键字:执行 方法 | 更新日期: 2023-09-27 18:27:06
我正在编写一个C#应用程序,它使用Page控件来显示一些信息。以下是我想做的…
- 加载/导航到页面
- 显示实际页面
- 然后,在页面加载并已显示后立即执行一个方法
对于步骤1,我基本上使用
this.NavigationService.Navigate(new ThePage())
以加载页面。页面的构造函数以及我的事件处理函数是
public partial class ThePage : Page
{
public ThePage()
{
InitializeComponent();
Loaded += new RoutedEventHandler(Page_Load);
}
protected void Page_Load(object sender, EventArgs e)
{
MessageBox.Show("hey");
}
}
因此,在实际页面显示之前,会显示MessageBox。我想换一种方式,我想显示页面,然后显示消息框。
我知道我可以使用计时器,但感觉这将是一个糟糕的解决方案,因为我必须猜测它的间隔,要么冒着使其太短的风险,要么通过设置间隔过长来人为地增加加载时间。
内容呈现事件如何?
public partial class ThePage : Page
{
public ThePage()
{
InitializeComponent();
ContentRendered+= new RoutedEventHandler(Page_Load);
}
protected void Page_Load(object sender, EventArgs e)
{
MessageBox.Show("hey");
}
}
我也遇到过类似的问题,在加载文档时显示了一个Messagebox。但是,在页面上所有页面内容都可见之前,Messagebox就已经显示了,我的页面为空,但显示了Messagebox。
我通过延迟执行消息框解决了这个问题,如下所示:
<Extension()> _
Public Sub MyMessageAlert(ByVal pPage As Page, ByVal pMessageText As String)
Dim s As String = "setTimeout(function(){window.alert('" & pMessageText & "')}, 10);"
ScriptManager.RegisterClientScriptBlock(pPage, pPage.GetType, "ClientScript", s, True)
End Sub
这允许页面加载(可能在单独的线程上?),并显示消息框。