WPF 委托和事件实现子窗口回调函数, 实时刷新主窗口控件

WPF多线程刷新界面控件1 这里不做结论性的总结,只写一个自己所用的解决方案。 主界面事件 --> 去子线程处理 --> 子线程处理完毕请求刷新界面线程的事件堆入界面线程的event queue里面。 namespace IXO_SYSTEM_V1._0 { /// /// Interaction logic for MainWindow.xaml /// public parti 阅读详情

注册窗口事件, 实时刷新主窗口控件

通常用于子窗口修改数据后实时刷新主窗口的ListView控件的场景


这个demo实现的功能是子窗口的TextBox中的数据实时显示到主窗口的Label


运行效果:



Solution Explore:



MainWindow.xaml

<Window x:Class="委托和事件实现子窗口回调函数.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:委托和事件实现子窗口回调函数"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="400">
    <Grid>
        <Button Name="buttonNewWindow" Content="Open SubWindow" Click="buttonNewWindow_Click" Margin="0,56,10,329"></Button>
        <Label Name="label" Margin="134,149,120,188"></Label>
    </Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace 委托和事件实现子窗口回调函数
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void buttonNewWindow_Click(object sender, RoutedEventArgs e)
        {
            SubWindow subWindow = new SubWindow();
            subWindow.Activate();
            subWindow.Show();
            subWindow.updateMainwindowLabel += SubWindow_updateMainwindowLabel;
        }

        private void SubWindow_updateMainwindowLabel(string labelContent)
        {
            label.Content = labelContent;
        }
    }
}

SubWindow.xaml

<Window x:Class="委托和事件实现子窗口回调函数.SubWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:委托和事件实现子窗口回调函数"
        mc:Ignorable="d"
        Title="SubWindow" Height="200" Width="300">
    <Grid>
        <Label Content="Content" Margin="26,56,193,82" RenderTransformOrigin="0.707,2.007"></Label>
        <TextBox Name="textBox" Margin="116,56,61,82" RenderTransformOrigin="0.487,1.402"></TextBox>
        <Button Name="buttonRefresh" Content="Refresh" Margin="0,136,0,0" Click="buttonRefresh_Click"></Button>
    </Grid>
</Window>

SunWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace 委托和事件实现子窗口回调函数
{
    /// <summary>
    /// Interaction logic for SubWindow.xaml
    /// </summary>
    public partial class SubWindow : Window
    {
        public delegate void UpdateMainwindowLabel(string labelContent);
        public event UpdateMainwindowLabel updateMainwindowLabel;

        public SubWindow()
        {
            InitializeComponent();
        }

        private void buttonRefresh_Click(object sender, RoutedEventArgs e)
        {
            if (updateMainwindowLabel != null)
                updateMainwindowLabel(textBox.Text.Trim());
        }
    }
}



C#WPF 刷新窗口 实例 可运行 C#WPF 刷新窗口 实例 可运行 http://www.cnblogs.com/leco/archive/2010/11/28/1890046.html WPF中实现Timer 事件 在 WPF 中不再有类似 WinForm 中的 Timer 控件,因此,需要使用 DispatcherTimer 类来实现类似 Timer 的定时执行事件,该事件使用委托方式实现。DispatcherTimer 类在 System.Windows.Threading 下,需要 using System.Windows.Threading 命名空间。 简单示例代码如下,该代码实现在 WPF 窗体的标题实时显示当前系统时间。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Threading; namespace TimerWindow { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { DispatcherTimer timer = new DispatcherTimer(); public MainWindow() { InitializeComponent(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = TimeSpan.FromSeconds(0.1); //设置刷新的间隔时间 timer.Start(); } void timer_Tick(object sender, EventArgs e) { this.Title = string.Concat("TimerWindow ", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); } } } 立即下载

相关推荐

PaddleOCR实战:给图片‘加个框’,轻松搞定小图和长图文字识别不准的难题

本文探讨了PaddleOCR在处理小图和长图时识别精度下降的问题,并提出通过图像边框预处理技术显著提升OCR识别效果。详细介绍了使用OpenCV实现智能边框添加的方法,包括核心原理、工程实践中的关键细节以及性能优化策略,帮助开发者轻松解决非常规尺寸图像的文本检测难题。

weixin_29313547的博客 188

【WPF】Wpf自定义控件及其数据自动刷新

之前四路温度监控的时候有过这个想法,但是介于Winform用代码添加控件的方法过于蛋疼所以最终采用了4线波形图来实现。 但是在接触wpf后,这个问题的两个难点(控件设计麻烦和容器布局麻烦)迎刃而解,于是便有了这个实验 在项目中添加自定义控件 并在XAML中对其界面进行编辑 代码如下: <StackPanel VerticalAlignment="Cen...

就随便写写.... 5707

告别Nginx原始日志!VictoriaLogs+Grafana构建企业级应用日志分析平台实战

描述:做为一个合格的运维工程师,在面对企业安全运维管理中,日志审计是一项非常重要的工作。授人以鱼不如授人以渔,各位运友们可参照作者的方案设计,在自己的项目中根据实际情况调整落地,例如,不在仅仅采集 NGINX 应用日志,而是采集 Apache、Tomcat、SpringBoot 等多种应用服务器的日志,又如,不再仅仅采集网络设备、安全审计审计日志,而是 Windows、Linux 等多种操作系统的审计日志等,大家可充分发挥想象、实践能力,也欢迎大家在知识星球中分享自己的方案设计,一起交流学习。

全栈工程师修炼指南-IT知识分享 2475

Wpf页面间传值--委托方法

Wpf页面间的传值有很多中方式,常用的有数据绑定与委托两种方法,今天记录下委托传值。

qq_42434073的博客 2270

Cadence PCB SI仿真实战:如何手动添加VIA过孔模型提升板级链路精度

本文详细介绍了在Cadence PCB SI仿真中如何手动添加VIA过孔模型以提升DDR4/5设计的精度。通过参数化建模和三维全波建模技术,工程师可以有效解决高速设计中的信号完整性问题,显著降低仿真误差。文章还提供了实战案例和常见问题解决方案,帮助优化板级链路性能。

weixin_28683391的博客 406

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

WPF 利用元素绑定实现在一个窗口更新另一个窗口中Label的Content

首先创建一个数据类,我在里面放了一个string类型的counterpublic class Data: INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private string counter; public stri...

Change的博客 3105

YOLOv11改进 | 特殊场景检测篇 | 利用图像去雾网络UnfogNet改进yolov11图像雾天检测能力(全网独家首发改进)

本文给大家带来的改进机制是利用UnfogNet超轻量化图像去雾网络,我将该网络结合YOLOv11针对图像进行去雾检测(也适用于一些模糊场景),我将该网络结构和YOLOv11的网络进行结合同时该网络的结构的参数量非常的小,我们将其添加到模型里增加的计算量和参数量基本可以忽略不计这是非常难得的,因为其也算是一种图像增强算法,同时本文的内容不影响其它的模块改进可以作为工作量凑近大家的论文里,非常的适用,图像去雾检测为群友最近提出的需要的改进。欢迎大家订阅我的专栏一起学习YOLO!

Snu77的博客 1628

C#进阶核心:委托、反射、泛型与异步编程实战解析

在C#编程中,委托与事件是实现解耦和发布-订阅模式的关键机制,它们通过类型安全的函数指针和封装,为构建松耦合架构提供了基础。反射技术则赋予程序在运行时动态加载和操作类型的能力,是实现插件化架构和动态扩展的核心原理。泛型通过类型参数化,解决了代码复用和类型安全的问题,而协变与逆变进一步提升了API的灵活性。异步编程通过async/await状态机模型,不仅避免了界面卡顿,更优化了I/O密集型操作的资源利用率。这些技术共同构成了C#处理复杂业务逻辑、实现高性能应用和与外部系统(如数据库、串口、OPC服务器)交互

weixin_34301132的博客 530

构建栅格地图matlab代码

1 使用MATLAB实现地图栅格化 效果图如下所示 图1 ...

qq_59747472的博客 4517

大模型安全-生成检测-事实核查-攻击-防御-思考-记忆-融合-语音相关研究 2025年版

本文整理了关于大模型安全领域的综合性资源,包括7篇综述论文、9个安全数据集以及5篇强化学习相关的安全研究论文。主要涉及大模型的对抗攻击、隐私保护、安全评估等方向,涵盖TruthfulQA、ToxiGen等知名数据集和TrustLLM、HarmBench等关键研究。资源包括知乎博主分享、arXiv预印本和顶会论文,并附有详细的中文讲解链接,为研究者提供了系统性的安全研究参考。

CSPhD-winston的博客 3582

WPF异步回调时回调函数如何获取异步函数产生的变量

有这么一个问题,WPF在使用异步回调的时候,回调函数需要用到异步函数里产生的一个变量,例如异步函数里查询数据库得到了一个DataTable,如何传递给回调函数呢? 【方案一】使用全局变量   很容易想到的是用全局变量,这也是最简单的办法。但是如果我想循环调用呢,例如回调函数判断异步函数执行完之后的DataTable有没有数据,有数据则继续异步(BeginInvoke),这时候如果使用全局变量可

子弹头zdt的专栏 768

基于ESP32的智能厨房控制系统开发

随着智能家居技术的发展,越来越多的家庭开始将传统的厨房设备进行智能化改造,以提高烹饪效率和生活质量。智能厨房控制系统是物联网(IoT)应用的重要组成部分,它将家居设备、传感器和网络结合起来,提供便捷的控制与监测功能,使厨房的烹饪过程更加智能、便捷和安全。基于ESP32的智能厨房控制系统不仅能够实现远程控制和监控,还能实现温度、湿度、烹饪状态的实时反馈,甚至具备智能化的推荐和自动化控制能力。ESP32是一款功能强大、集成度高的嵌入式开发平台,具有Wi-Fi和蓝牙双模通信能力,广泛应用于物联网设备的开发。

2201_76125393的博客 658

【wpf】依赖属性三个回调详解

1PropertyChangedCallback值回调 2CoerceValueCallback强制回调 3ValidateValueCallback验证回调

songhuangong123的博客 2849

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

WPF 委托

可以定义自己的委托类型来使用。// 创建委托实例并指定方法// 调用委托");

chongchong1325的博客 934

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

WPF关闭子窗口时刷新父页面列表数据,WPF窗体间传参

【代码】WPF关闭子窗口时刷新父页面列表数据,WPF窗体间传参。

u011511086的专栏 1075

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

WPF之C#委托入门(一)

Day2 学习WPF之委托以致用 1、委托(delegate)是函数指针的“升级版” ①用函数名称直接调用 #include<studio.h> int Add(int a,int b) { int result = a + b; return result; } int Sub(int a,int b) { int result = a - b; return result; } int main() { int x = 100; .

qq_42261092的博客 2672

C# wpf 获取控件刷新的时机

做wpf开发不像mfc控件的刷新相对同步,wpf的控件改变宽高或者可见性后在下一行代码不会立刻看到效果,而且也没有一种事件可以获取确切的界面刷新后的时机。如果只是进行延迟等待,在不同机器效果是不同的,而且也并没有具体标识说明已刷新界面,这就导致某些场景的功能实现起来会比较困难。本文提供一种获取控件真正界面刷新时机的方法。以上就是今天要讲的内容,本文的做法是笔者曾经在某个论坛看到的建议,然后去尝试实现发现是可行的,后来进一步封装为异步方法。

codeofcc的博客 1415

WPF 委托事件写法

为了代码不看的那么乱,把功能差不多都写到一个方法里,里面用页面分割 首先创建实体类 public class Studens//数据实体类 { public int id { get; set; } public string name { get; set; } } public delegate void StudensDelegateHandle(Studens studens); public

qq_43393792的博客 1094

wpf一个较通用的界面刷新方法

DispatcherFrame frame = new DispatcherFrame(); Dispatcher.CurrentDispatcher.BeginInvoke(new DispatcherOperationCallback(f => { ((DispatcherFrame)f).Continue = false; return null; }), DispatcherPriority....

黑色渲染的博客 4556

WPF 下 label 的刷新

WPF下,label控件并没有什么 Refresh() 的方法。那么现在问题就来了。假设有这么个场景:WPF窗体上有一个按钮,一个Label,按下按钮,触发一些耗时的操作;在操作之前,Label显示一个信息,说现在开始要做什么什么东西了。结果,按钮按下去以后,系统会处于忙碌状态,而Label该先显示的内容,却没有显示,一直等到耗时操作完毕,才突然显示。这不科学呀,完全失去了提示的意义。明明是 ...

weixin_34198797的博客 631

WPF常用刷新界面函数

【代码】WPF常用刷新界面函数。

Hat_man_的博客 913

WPF 委托事件

新建委托类: public class DataChangeEventArgs : EventArgs { // 定义委托 public delegate void DataChangeHandler(object sender, DataChangeEventArgs args); public string devA { get; set; } public string devB { get; set; }

BeanGo的博客 811

WPF刷新控件值

如下代码可以让t1控件从0到49逐一递增。

qq_15031601的博客 628

WPF 子页面更改菜单列表 通知主页面进行刷新操作

当我们更改菜单管理页面 进行增删改查完成操作时需要主页面的菜单列表进行更新。

weixin_73964676的博客 1156

C# wpf 实现局部刷新的尺子控件

概述 wpf的界面功能很强大,尤其是其绑定机制天然的支持mvvm模式,这样使得界面和业务逻辑可以完全分离。在做视频剪辑工具的时候需要是标尺的,在wpf中很容易实现一个自定义的标尺控件。但是在实际使用中会遇到一个问题,即标尺长度越大,渲染速度越慢,当其总刻度到达几百万时拖动会直接重新渲染会造成界面卡顿。故这里需要给标尺控件加入局部刷新技术,即只渲染当前可见部分的刻度,减少看不见部分的不必要的渲染计算。 原理说明 1、标尺实现 (1)自定义控件 定义一个尺子类,继承: FrameworkElement。 (2)

codeofcc的博客 2350
上一篇: WPF 委托刷新UI线程(System.InvalidOperationException: '调用线程无法访问此对象,因为另一个线程拥有该对象。')
下一篇: Qt QDomDocument类读取Xml
Empty_Android
博客等级 码龄10年 98粉丝 45原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值