大家好!
刚才快下班的时候我正在写一个winform的程序,界面是treeview+listview的联动,就好像windows的组策略的样子,在子窗体中修改策略的安全设置,在主窗体中刷新显示,见下图:

一想,不就是子父窗体传值吗,我以前做过啊,还写过两篇教程呢。
c#,winform,show,showdialog,子窗体,父窗体,传值,输入正确

winform+c#之窗体之间的传值

就开始写了,就利用属性和构造函数吧,定义属性,添加构造函数。。。。
咦,在主窗体的代码里面怎么也点不出来子窗体的属性了,怎么回事呢,把教程找出来看了一下,没有问题,删除重写,还是不行。重启vs2005,还是不行,重启电脑,还是不行,恩,排除了这些怪异原因。

我仔细看了一下,有点不一样了,教程的传值,子窗体是new出来的,可是我这里用的是反射,根据双击的名字反射出来的,就好像教程
通过双击listview中的项目来打开新窗体,有点像组策略中的双击一条策略,然后弹出相应的窗体,修改策略

,这就是不一样了,我就想了,是不是因为反射出来的东西,反射吗,本来就是要在运行的时候动态的访问,在编译的时候,甚至在写代码的时候是根本访问不到的,要不也不叫动态创建,反射了。
那怎么办呢,我就想了,窗体反射,反射不是可以查看类型的内部吗,可以了解类型的成员,属性,方法,连私有的都可以访问得到啊,对了,就是用反射,用反射来获取刚才写的属性就可以了。
说干就干,主窗体代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;

namespace WindowsApplication1
{
    public partial class frmPolicyConfig : Form
    {
        public frmPolicyConfig()
        {
            InitializeComponent();
        }
        private string returnValue;
        public string ReturnValue
        {
            get { return this.returnValue; }
            set { listView1.SelectedItems[0].SubItems[2].Text = value; }
            }
        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            Type type = Type.GetType("WindowsApplication1." + listView1.SelectedItems[0].SubItems[2].Text);
            object obj = Activator.CreateInstance(type);
            Form form = (Form)obj;
            form.Owner = this;
            form.ShowDialog();
            if (form.DialogResult == DialogResult.OK)
            {
                PropertyInfo[] pinfos = type.GetProperties();
                foreach (PropertyInfo p in pinfos)
                {
                    if (p.Name == "PasswordLength")
                    {
                        //MessageBox.Show(Convert.ToString(p.GetValue(obj, null)));
                        this.returnValue=Convert.ToString(p.GetValue(obj, null))+" 个字符";
                        listView1.SelectedItems[0].SubItems[1].Text = this.returnValue;

                        //foreach (ListViewItem lvItem in listView1.Items)
                        //{
                        //    if (lvItem.Text.Equals("密码长度最小值"))
                        //    {
                        //        lvItem.SubItems[1].Text = this.returnValue;
                        //        break;
                        //    }
                        //}
                        break;
                    }                    
                    
                }
            }
            
        }

        
    }
}

子窗体的代码如下,测试通过

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public partial class frmPasswordLength : Form
    {
        

        public frmPasswordLength()
        {
            InitializeComponent();
            button2.DialogResult = DialogResult.OK;
            button1.DialogResult = DialogResult.Cancel;
        }
        public int PasswordLength
        {
            get { return Convert.ToInt32( this.numericUpDown1.Value); }
            set { this.numericUpDown1.Value = value; }
        }
      
           

       
    }
}


修改成功

大功告成,希望对大家有帮助,谢谢大家耐心看完我的教程。

转载于:https://www.cnblogs.com/virusswb/archive/2008/05/26/1207989.html

窗体传值,子窗体,父窗体,反射,reflection,windows,组策略,gpedit.msc,动态创建窗体,谢谢...相关推荐

  1. Excel 2010 VBA 入门 137 动态创建窗体

    目录 题 码 VBComponents集合 VBComponent对象 题 如图所示,该表为某公司工资表与员工档案表,当查看工资表时,希望能够在双击员工姓名时,在员工档案表中查询该员工的基本信息,并临 ...

  2. 窗体传值 父子窗体传值情况 c# 1231

    窗体传值 子窗对父窗传值 c# 1231 平级窗体传值 新窗体指定所有者 新窗体通过所有者属性,可找到关联窗体 给关联窗体控件赋值 子窗体对父窗体传值 子窗体的设置 把父窗体对象存在了tag中 装箱了 ...

  3. c# winform 反射 动态创建窗口

    private void button1_Click(object sender, EventArgs e) { string formName = this.textBox1.Text; Objec ...

  4. 从子窗体传递数据给父窗体

    弹出窗口刷新它的父页面后.出现不重新发送信息,则无法刷新网页 2005-09-29 13:49 黄玮璘 很简单的解决方法 在.NET里头 默认有POSTBACK的控件存在 当页面回传的时候 后台会根据 ...

  5. 子窗体菜单合并到父窗体菜单的解决办法

    系统中既有父窗体又有子窗体,子窗体添加下拉菜单,运行时子窗体的菜单会合并到父窗体的菜单中,解决办法是,将子窗体菜单控件的AllowMerge属性设为false.

  6. C#子窗体精确定位到父窗体的某个位…

    弹出的子窗体精确定位在父窗体的某个位置,需要有目标坐标(这里将子窗体的位置设置为父窗体中一个panel的位置,需要将panel的坐标转换成屏幕坐标) lvlv_CauseForm cf = new l ...

  7. 如何:创建 MDI 父窗体、子窗体、确定活动的 MDI 子窗体

    Microsoft Visual Studio 2008/.NET Framework 3.5 Windows 窗体编程 如何:创建 MDI 父窗体 多文档界面 (MDI) 应用程序的基础是 MDI ...

  8. vb如何设置父窗体与子窗体——MDI窗体

    目前我理解的父窗体与子窗体的关系是:父窗体包含子窗体. 想要达到这样的效果,首先要新建一个父窗体(MDI窗体). MDI窗体上又不允许放置PictureBox以外的控件,但是Picture上面就能放置 ...

  9. Delphi中MDI父窗体与子窗体菜单合并

    如果你写的MDI程序中,要将父窗体与子窗体菜单融合在一起,Delphi提供了非常方便的方法.将父窗口的上级菜单比方说"File"文件,有个属性GroupIndex,设为0,将子窗体 ...

  10. 简单实现 子窗体关闭后 刷新父窗体的DataGridView控件数据

    简单实现 子窗体关闭后 刷新父窗体的DataGridView控件数据 首先创建两个窗体,一个父窗体Form1 一个子窗体Form2 在show 子窗体时 设置 Form2 form2=new Form ...

最新文章

  1. E20180525-hm
  2. PHP各个组件或工具的安装与使用
  3. OpenSessionInViewFilter作用及配置
  4. jquery ajax跨域访问webservice配置
  5. letsencrypt 免费https安装过程linux centos
  6. Docker系列之二:基于容器的自动构建
  7. Codeforces Gym 100286I iSharp 模拟
  8. java 自动装箱自动拆箱,java自动装箱、自动拆箱和正常情况性能比较
  9. ajax返回功能,jquery – 记得ajax在点击返回按钮时添加的数据
  10. 如何删除mysql软链接,Linux中移除(删除)符号链接的命令
  11. 字节版 趣味测试小程序源码
  12. android手机如何拥有苹果表情包,怎样让安卓emoji显示iPhone的emoji样式
  13. java 执行bat文件
  14. 修改Android系统配置文件build.prop
  15. zblog模板php免费三栏,天兴工作室三栏布局zblog模板 自定义配色
  16. 万科副总裁毛大庆在建策沙龙上关于楼市走向的发言
  17. 西门子1500PLC机器人焊接程序(西门子PLC+西门子触摸屏)
  18. 解决方案:ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿
  19. 初学rust——Tests
  20. contourf()绘制填充颜色的二维等高线图

热门文章

  1. java简单的思维逻辑训练_简单的代码,适合初学者,锻炼逻辑思维能力,可以练习练习!...
  2. 栈溢出(Stack Overflow)
  3. python退出程序 只跳出while_为什么我的简单程序从不退出while循环?
  4. Commons Collections4 简单使用
  5. 四、Linux常用命令——文件搜索命令
  6. 十八、JAVA基本数据类型的包装类
  7. java jar 启动脚本
  8. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-1.快速搭建SpringBoot项目,采用Eclipse...
  9. 阶段3 2.Spring_06.Spring的新注解_6 Qualifier注解的另一种用法
  10. 阶段3 2.Spring_04.Spring的常用注解_7 改变作用范围以及和生命周期相关的注解