WPF 之 窗口间传参数
有如下几种方式:
1) 声明个全局变量,就是App.xaml里面声明;在所有窗体里面都可以引用 Application.Current.Properties["ArgumentName"];
2) 第二个就是 在目标窗体上面公开个 属性,直接赋值;
3) 最后就是在Uri里面传参数 NavigationService.Navigate(window object,argument value)
4) 采用事件响应,传递值。
以下以实例具体说明事件响应传值:点击主窗口MainWindow 上的一个OpenSubWindow按钮 -> 打开子窗口SubWindow -> 在子窗口中的TextBox中输入值, 点击OK后关闭 -> 主窗口上的TextBox获取子窗口中的值。
4、事件响应传值。
1) 在子窗口中定义一个事件PassValuesEvent。 当点击 OK 按钮时,触发事件,并传递数值。( PassValuesEventArgs 是EventArgs类,需要同时定义好)
public partial class SubWindow : Window
{
public delegate void PassValuesHandler(object sender, PassValuesEventArgs e); public event PassValuesHandler PassValuesEvent; public SubWindow()
{
InitializeComponent();
} private void btnOK_Click(object sender, RoutedEventArgs e)
{
string value1 = tbValue1.Text; // Text Property return value is string type .
int value2;
Int32.TryParse(tbValue2.Text, out value2); PassValuesEventArgs args = new PassValuesEventArgs(value1, value2);
PassValuesEvent(this, args); this.Close();
}
}
2) 在主窗口中的OpenSubWindow按钮点击的方法中,订阅了PassValuesEvent事件。当事件触发时,获取传递的参数的值。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
} private void btnOpenSubWindow_Click(object sender, RoutedEventArgs e)
{
SubWindow subWindow = new SubWindow(); // 订阅事件
subWindow.PassValuesEvent += new SubWindow.PassValuesHandler(ReceiveValues); subWindow.Show();
} private void ReceiveValues(object sender, PassValuesEventArgs e)
{
this.tbValue1.Text = e.Value1;
this.tbValue2.Text = e.Value2.ToString();
}
}
WPF 之 窗口间传参数的更多相关文章
- Android 界面间传参数
登陆页 //声明Intent对象,并启动 LoginActivity Activity Intent intent = new Intent(); intent.setClass(LoginActiv ...
- Wpf Page间跳转传参数 And Window To Page
这段时间用到Wpf,页面间的跳转网上有不少的示例,但是有些已经不能用了,尤其是页面间的传参问题更是一大堆,但正确的解决方案却没有几个,或者说写的不清楚,让人走了很多弯路,查看官方文档后发现了正确的姿势 ...
- C# WPF 通过委托实现多窗口间的传值
在使用WPF开发的时候就不免会遇到需要两个窗口间进行传值操作,当然多窗口间传值的方法有很多种,本文介绍的是使用委托实现多窗口间的传值. 在上代码之前呢,先简单介绍一下什么是C#中的委托(如果只想了解如 ...
- WPF多窗口传参解决方案
在WPF中,我们的常常涉及到多个窗口之间传递参数的问题,那么该怎么传呢? 答:在窗口的构造函数中添加想要传递的参数.(我表达不好,请看下面代码.) 在主窗口中单机button打开一个新的子窗口. // ...
- WPF 进程间传递参数
WPF 进程间传递参数 在软件开发中有时需要在一个软件中启动另一个软件,这时用Process.Start(“软件路径”)可以启动另一个软件.如果在这个过程中还需要传递一些参数给新启动 ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...
- WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口)
原文 WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口) WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程 ...
- 2000条你应知的WPF小姿势 基础篇<74-77 WPF 多窗口Tips>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...
- AB窗体互传参数
一.找了好几个,都不靠谱,不是说不靠谱,自己感觉太繁琐 二.父窗口传子窗口好传,有两种方法(自己认为比较简单的方法哈), 1第一种方法:在子窗口中新建一个属性:再新建一个方法,当然方法就是把属性个窗体 ...
随机推荐
- RESTful API 设计最佳实践(转)
摘要:目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API格式如何?你的API ...
- 杭电ACM减花布条
这是原题的地址 http://acm.hdu.edu.cn/showproblem.php?pid=2087 Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条 ...
- oracle 去掉空格
trim(value) 去掉左右空格 ltrim(value) 去掉左空格 rtrim(value) 去掉右空格
- Windows PE3.0制作方法(从Win7中提取制作)
Windows PE3.0制作方法(从Win7中提取制作 在d:新建文件夹winpe,在winpe中新建sources.pe3和new文件夹,把附件中提供的工具imagex连文件夹一起放到winpe目 ...
- How Tomcat Works(十)
本文接下来分析tomcat的日志记录器,日志记录器是用来记录消息的组件,在tomcat中,日志记录器需要与某个servlet容器相关连:在org.apache.catalina.logger包下,to ...
- POJ 1005(累加)
/* * POJ_1005.cpp * * Created on: 2013年10月14日 * Author: Administrator */ #include <iostream> # ...
- 谈Android四大组件之Service篇
Service简介 Service是Android系统中的四大组件之一,它是一种长生命周期的,没有可视化界面,运行于后台的一种服务程序.Service必须在AndroidManifest.xml中声明 ...
- chart.js接口开发:X轴步长和Labels旋转角
一. 当初为什么选择chart.js 当初项目使用库是Zepto,Zepto能支持的chart处理库太少.也是为了使得项目比较轻量化,所以选择了chart.js. 但是最后的显示结果实在太差,放弃了c ...
- 在类库中使用Session
昨天在做优化网站代码的时候,突发奇想想将页面的代码和业务逻辑代码分离开.就是页面下的.cs文件只用于收集前台上的数据而业务处理都放到一些类库中.可是问题来了,在类库中是无法直接使用Session.在网 ...
- PL/pgSQL多输出参数例子
例子一,不带returns: postgres=# CREATE FUNCTION sum_n_product(x int, y int, OUT sum int, OUT prod int) AS ...