• C#通过事件跨类调用WPF主窗口中的控件


    xaml.cs文件:

    复制代码
     1 using System;
     2 using System.Timers;
     3 using System.Windows;
     4 using System.Windows.Forms;
     5 namespace ControlUsed
     6 {
     7     //要修改控件的属性 只能在定义控件的xaml或者xaml对应的cs文件修改。  首先订阅Monitor的PartEvent事件,当触发PartEvent事件时(可能并不在类MainWindow对象中),被注册的函数就行做出相应的响应。
     8     public partial class MainWindow
     9     {
    10        
    11         public MainWindow()
    12         {
    13               Monitor.PartEvent += OnStep;//将该类中的函数注册到Monitor静态类的PartEvent事件中。
    14         }
    15         public  void OnStep(Object sender,MessageArgs message)
    16         {
    17           
    18             Application.Current.Dispatcher.Invoke(new Action(() =>
    19                 {
    20                     MyTextBlock.Text = message.Txtmessage;//设置对应xaml中控件的属性
    21                 }));
    22         }
    23      }
    24 }
    复制代码

    MessageArgs类:

    复制代码
     1 public  class MessageArgs:EventArgs
     2     {
     3        public MessageArgs(string message)
     4        {
     5            this.TxtMessage = message;
     6        }
     7 
     8        public string TxtMessage { get; set; }
     9        
    10     }
    复制代码

    Monitor静态类:

    复制代码
     1  public static class Monitor
     2     {
     3       public static event  EventHandler<MessageArgs> PartEvent;//定义在Monitor中的一个事件,参数是MessageArgs对象
     4 
     5       
     6       public static void InFunction(string message)
     7        {
     8            var messageArg = new MessageArgs
     9                {
    10                    TxtMessage=message
    11                };
    12            if (PartEvent != null)//如果mainwindow构造函数中给PartEvent注册了函数就不为null
    13            {
    14                PartEvent(null, messageArg);//触发事件,执行所有注册过的函数
    15            }
    16        }
    17 
    18     public static bool MonitorCenter(string s)
    19        {
    20          InFunction(s);//在外部类中修改TextBlock的Text
    21        }
    22 }
    复制代码

     转自:https://www.cnblogs.com/foreveryt/p/4044418.html

    Do something useful!
     
  • 相关阅读:
    uva 11248 最大流 ISAP
    【力扣】133. 克隆图
    【力扣】125. 验证回文串
    【力扣】130. 被围绕的区域
    【力扣】337. 打家劫舍 III
    【力扣】104. 二叉树的最大深度-及二叉树的遍历方式
    【力扣】392. 判断子序列
    【力扣】95. 不同的二叉搜索树 II
    【力扣】120. 三角形最小路径和
    【力扣】两个数组的交集 II
  • 原文地址:https://www.cnblogs.com/javalinux/p/15136213.html
Copyright © 2020-2023  润新知