【问题标题】:Theme changed event?主题改变事件?
【发布时间】:2021-02-04 15:51:10
【问题描述】:

我用 VB.Net 构建了一个 Winforms RadForms 应用程序。该应用程序包含多个表单,其中包含多个 rad 控件。通过单击按钮更改主题。但是主题改变大约需要 3-4 秒。现在我想要实现的是应用程序必须在主题更改时显示一个带有消息“主题已更改”的消息框。我想知道在主题更改期间是否可以触发任何事件并找到一个名为“ThemeNameChanged”的事件。我是这样设置的:

Private Sub theme_changed (source as Object, args As ThemeNameChangedEventArgs) 处理 Me.ThemeNameChanged
Msgbox("主题已更改")
结束子

然后我就一键切换主题:

私有子 Button1_Click(...) 处理 Button1.Click ThemeResolutionService.ApplicationThemeName = "TelerikMetroBlue"
结束子

但是当单击 Button1 时,主题会发生变化,但是一旦主题发生变化,消息就不会显示。那么当主题改变时如何显示消息?

【问题讨论】:

  • ThemeNameCahngedEventArgs 这不会编译...ThemeNameChangedEventArgs 应该是这样。你也没有例程名称。
  • @Çöđěxěŕ 感谢您的更正。我现在已经编辑了问题。

标签: vb.net winforms telerik


【解决方案1】:

设置 ThemeResolutionService.ApplicationThemeName 属性将使用新应用的主题设置整个应用程序的样式。但是,为了在这种情况下检测主题更改,ThemeResolutionService 提供了 ApplicationThemeChanged 事件:

    Sub New() 
    InitializeComponent()

    AddHandler ThemeResolutionService.ApplicationThemeChanged, AddressOf ThemeResolutionService_ApplicationThemeChanged

End Sub
Private Sub RadButton1_Click(sender As Object, e As EventArgs) Handles RadButton1.Click
    ThemeResolutionService.ApplicationThemeName = "Fluent"
End Sub

Private Sub RadButton2_Click(sender As Object, e As EventArgs) Handles RadButton2.Click
    ThemeResolutionService.ApplicationThemeName = "FluentDark"
End Sub

Private Sub ThemeResolutionService_ApplicationThemeChanged(sender As Object, args As ThemeChangedEventArgs)
    RadMessageBox.Show("Theme changed " & ThemeResolutionService.ApplicationThemeName)
End Sub

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2017-04-21
    • 2017-08-14
    • 2020-10-03
    相关资源
    最近更新 更多