zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    构建简单的二叉树(C)
    C指針淺析(3)
    C語言函數
    C# 細節(2)
    如何做好软件架构设计
    C# 細節(1)
    .NET Framework格式化字符串
    Windows下通过删除硬盘分区直接强行移除Fedora后恢复Windows启动项的方法
    DreamWeaver使用技巧学习心得
    MyEclipse使用心得、快捷键、设置
  • 原文地址:https://www.cnblogs.com/foreveryt/p/4044418.html
Copyright © 2011-2022 走看看