这篇文章是我对ChildWindow的理解,举例说明:

有时候在项目中需要弹出子窗体进行一些操作,然后将操作的值返回到父窗体中。

下图是子窗体的界面(比较粗糙。。。。)

下面贴出其代码:

子窗体前台代码
 <controls:ChildWindow x:Class="FineMmarketing.Controls.SelectChild"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
            Width="365" Height="226"
            Title="请选择纬度">
     <Grid x:Name="LayoutRoot" Margin="2" >
         <Grid.RowDefinitions>
             <RowDefinition />
             <RowDefinition Height="Auto" />
         </Grid.RowDefinitions>
         <StackPanel Margin="0,0,0,37">           
             <TextBlock Width="100" Height="30" Text="请输入纬度:" Margin="83 35 0 0" HorizontalAlignment="Left" />
             <TextBox x:Name="Txt" Width="200" Height="30" HorizontalAlignment="Center" Margin="24 0 0 0"/>
         </StackPanel>
        
         <Button x:Name="CancelButton" Content="取消" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
         <Button x:Name="OKButton" Content="确定" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" />
     </Grid>
 </controls:ChildWindow>

子窗体后台代码
  /// <summary>
         /// 确定按钮
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void OKButton_Click(object sender, RoutedEventArgs e)
         {           
             if (!String.IsNullOrEmpty(this.Txt.Text))
             {
                 Regex reg = new Regex("^[0-9]+$");
                 Match ma = reg.Match(this.Txt.Text.ToString());
                 if (ma.Success)
                 {
                     Num = Convert.ToInt32(this.Txt.Text.ToString());
                     if (Num > 10)
                     {
                         MessageBox.Show("纬度不能超过10!");
                         return;
                     }
                     else
                     {
                         this.Tag = Num;
                     }          
                 }
                 else
                 {
                     MessageBox.Show("请输入正确的纬度!");
                 }
             }
             else
             {
                 MessageBox.Show("请输入纬度!");
             }
             this.DialogResult = true;
         }
  /// <summary>
         /// 取消按钮
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void CancelButton_Click(object sender, RoutedEventArgs e)
         {
             this.DialogResult = false;
         }

然后看一下在父窗体中如何调用子窗体,然后后台定义事件执行子窗体关闭事件。

子窗体后台代码
 SelectChild myChild = new SelectChild();//申明子窗体对象
 ////定义子窗体关闭事件
 myChild.Closed += new EventHandler(win_Closed);
 
 
  /// <summary>
         /// 子窗口关闭返回值事件
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         void win_Closed(object sender,EventArgs e)
         {
             bool? result = myChild.DialogResult;
             //判断是否是顶级确定按钮关闭并且有返回值
             if (result.HasValue && result.Value)
             {
                 //是定义在子窗体中的公有的全局变量
                 MessageBox.Show(myChild.txt);
             }
         }

silverlight 对ChildWindow返回给父窗体值的理解(转载)的更多相关文章

  1. LayUI 子父窗体的交互

    ---恢复内容开始--- 收到的工作是将一个ERP的窗体程序改为网页实现,所以就肯定需要弹框来选择(如:物料编码.部门.业务员等等) 本文采取的前段框架是LayUI. layUI的官网API网址:ht ...

  2. asp.net 父窗体获取子窗体的返回值,可用来对父窗体局部更新

    今天在项目上遇到了这个问题,其实只是window.returnValue的简单应用,不是asp.net的专属内容.作为积累,记录一个简单的实现模型. 图1  用到的文件 从图1中我们可以看到,只用到了 ...

  3. 20150812 Asp.net 父窗体获取子窗体的返回值,更新父窗体文本控件(应用)

    1. 父窗体 **************************************** using System;using System.Collections;using System.C ...

  4. silverlight 父窗体传值给ChildWindow

    在网上找了许多列子,有的没有看懂,有的太麻烦. 现在有两种方法又简单又实用的,分享给大家! 第一种:使用构造函数传值 1.子页面新建一个构造函数 public ChildWindowTest(stri ...

  5. silverlight子窗体操作数据库后刷新父窗体

    silverlight子窗体操作数据库后刷新父窗体 作者 Kant 写于 2011 年 07 月 02 日 分类目录 学习笔记, 所有文章 C# Silverlight 代码 刷新 学习 异步刷新 数 ...

  6. C# 在子窗体调用父窗体的值(转)

    1.在父窗体中 public delegate void SetVisiableHandler();//定义委托类型 注意此委托定义在namespace下一级,在form类外 private void ...

  7. window.opener调用父窗体方法的用法

    应用实例:        function BindWindowCloss() {            $(window).bind('beforeunload', function () {    ...

  8. C# Winform 窗体传值 利用委托 子窗体传值给父窗体

    常用的Winform窗体传值有两种方式. 1.更改Form.designer.cs文件,将控件的设为Public,供子窗体访问. 在designer.cs文件的最后,找到你的控件声明. private ...

  9. js判断是否是对象获取子窗体值

    判断是否是对象 Object.prototype.toString.call(obj) 装换为数组 Array.prototype.slice.call(obj) 父窗体获取值子窗体值$(functi ...

随机推荐

  1. Codeforces #442 Div2 F

    #442 Div2 F 题意 给出一些包含两种类型(a, b)问题的问题册,每本问题册有一些题目,每次查询某一区间,问有多少子区间中 a 问题的数量等于 b 问题的数量加 \(k\) . 分析 令包含 ...

  2. Codeforces 855C - Helga Hufflepuff's Cup

    855C - Helga Hufflepuff's Cup 题意 要求构建一棵树,树上至多可以存在 \(x\) 个权值为 \(k\) 的重要点,且与重要点连边的点的权值必须小于 \(k\),问有多少种 ...

  3. IDL软件初步了解

    软件名称:IDL(交互式数据语言Interactive Data Language) 软件类别:是国产软件,语言类,数据分析类,数据可视化类 语言类别:解释型 作用:可以进行数据处理的可视化等,在大数 ...

  4. 【分块】bzoj1593 [Usaco2008 Feb]Hotel 旅馆

    分块,记录每个块内包括左端点的最大连续白段的长度, 整个块内的最大连续白段的长度, 和包括右端点的最大连续白段的长度. Because 是区间染色,所以要打标记. 至于怎样在O(sqrt(n))的时间 ...

  5. 【最短路】【最大流】bzoj3931 [CQOI2015]网络吞吐量

    跑出最短路图,然后把结点拆点跑最大流. #include<cstdio> #include<queue> #include<cstring> #include< ...

  6. js常用功能总结

    1,手机号的校验 //手机号的判断 function checktel() { //手机号不为空,格式校验 var tel = $(".uidbtp").val(); if(tel ...

  7. Asp.Net MVC part2 View、Controller详解

    View详解Razor视图引擎简介HtmlHelper强类型页面 Razor视图引擎简介强大的@:表示使用C#代码,相当于aspx中的<%%>可以完成输出功能当遇到html标签时会认为C# ...

  8. cocos2dx -lua 面向对象-转

    转自:http://www.himigame.com/lua-game/1282.html 上一篇中,向童鞋们介绍了如何自定义类binding到Lua中供给使用的教程,那么本篇将介绍利用OOP思想在在 ...

  9. ajax asynx:false

    默认设置下,所有请求均为异步请求.如果需要发送同步请求,请将此选项设置为 false.注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行 (默认: true) 默认设置下,所有请求均为 ...

  10. Queue 队列的用法

    队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用. 以下实例演示了队 ...