C#通过事件跨类调用WPF主窗口中的控件
2014-10-30 17:59
239 查看
xaml.cs文件:
using System;
using System.Timers;
using System.Windows;
using System.Windows.Forms;
namespace ControlUsed
{
public partial class MainWindow
{
public MainWindow()
{
Monitor.PartEvent += OnStep;//将该类中的函数注册到Monitor静态类的PartEvent事件中。
}
public void OnStep(Object sender,MessageArgs message)
{
Application.Current.Dispatcher.Invoke(new Action(() =>
{
MyTextBlock.Text = message.Txtmessage;//设置对应xaml中控件的属性
}));
}
}
}
MessageArgs类:
public class MessageArgs:EventArgs
{
public MessageArgs(string message)
{
this.TxtMessage = message;
}
public string TxtMessage { get; set; }
}
Monitor静态类:
public static class Monitor
{
public static event EventHandler<MessageArgs> PartEvent;//定义在Monitor中的一个事件,参数是MessageArgs对象
public static void InFunction(string message)
{
var messageArg = new MessageArgs
{
TxtMessage=message
};
if (PartEvent != null)//如果mainwindow构造函数中给PartEvent注册了函数就不为null
{
PartEvent(new object(), messageArg);//触发事件,执行所有注册过的函数
}
}
public static bool MonitorCenter()
{
InFunction("change");//在外部类中修改TextBlock的Text
}
}
using System;
using System.Timers;
using System.Windows;
using System.Windows.Forms;
namespace ControlUsed
{
public partial class MainWindow
{
public MainWindow()
{
Monitor.PartEvent += OnStep;//将该类中的函数注册到Monitor静态类的PartEvent事件中。
}
public void OnStep(Object sender,MessageArgs message)
{
Application.Current.Dispatcher.Invoke(new Action(() =>
{
MyTextBlock.Text = message.Txtmessage;//设置对应xaml中控件的属性
}));
}
}
}
MessageArgs类:
public class MessageArgs:EventArgs
{
public MessageArgs(string message)
{
this.TxtMessage = message;
}
public string TxtMessage { get; set; }
}
Monitor静态类:
public static class Monitor
{
public static event EventHandler<MessageArgs> PartEvent;//定义在Monitor中的一个事件,参数是MessageArgs对象
public static void InFunction(string message)
{
var messageArg = new MessageArgs
{
TxtMessage=message
};
if (PartEvent != null)//如果mainwindow构造函数中给PartEvent注册了函数就不为null
{
PartEvent(new object(), messageArg);//触发事件,执行所有注册过的函数
}
}
public static bool MonitorCenter()
{
InFunction("change");//在外部类中修改TextBlock的Text
}
}
相关文章推荐
- C#通过事件跨类调用WPF主窗口中的控件
- 关于在c#中创建用户控件后,winform应用程序在调用中无法通过点击用户控件的子控件为其自动添加事件代码的问题
- C# winform中自定义用户控件 然后在页面中调用用户控件的事件
- 通过一个控件的KeyPress事件调用另一个控件的Click事件
- c#中通过事件实现按下回车跳转控件
- C#.Net里面通过事件调用事件,通过简单了解相信可以帮你解决问题
- C#中多个label调用同一单击事件,怎么分辨是通过哪个label调用的
- C# 调用ComboBox控件的SelectedIndexChanged事件
- C#通过委托调用Button单击事件的方法
- C#.NET dll封装(包含UI和实现函数),通过反射调用dll实现控件的快速加载(PrimPointList.cs)
- C# winform中自定义用户控件 然后在页面中调用用户控件的事件
- C#.NET dll封装(包含UI和实现函数),通过反射调用dll实现控件的快速加载(PrimPointListCreator.cs)
- C#外部控件调用click事件
- C#计时器;控件移动;获取鼠标坐标;事件调用事件;
- C#中调用控件的事件
- 通过调用API确定MEMO控件中的当前行和列
- 在 C# 中通过 P/Invoke 调用Win32 DLL
- 在 C# 中通过 P/Invoke 调用Win32 DLL
- VisualStudio.NET 或 Visual Studio 2005 客户端应用程序无法捕获 Office Spreadsheet 11.0 ActiveX 控件通过引发事件
- 在 C# 中通过 P/Invoke 调用Win32 DLL