zoukankan      html  css  js  c++  java
  • Windows Form 之间相互引用

    想用WinForm写点东西,遇到一个郁闷的问题,想在Forms之间相互传值遇到困难。上网找到一个解决方法,又自创一种。假设要在Form1中创建Form2,Form2要访问Form1,最简单的方法是给Form2加上一个

    public Form1 parent;

    Form1创建Form2时这样写:

    Form2 f2 = new Form2();
    f2.parent 
    = this;
    f2.Show();

    就在Form2中可以用 parent 访问Form1了。

    但是如果Form1和Form2没有父子关系,Form2不是在Form1中创建,Form2也不是在Form1中创建,怎么得到对方的实例呢?这里以Form1为例。我们创建另一个Form,用它来实例化其他Form,比如叫 Starter。

    在Starter中加上静态变量f1和静态方法GetForm1():


        public partial class Starter : Form
        
    {
            
    public static Form1 f1;

            
    public static Form1 GetForm1()
            
    {
                
    if (f1 == null)
                
    {
                    f1 
    = new Form1();
                }

                
    return f1;
            }

            
            
    public Starter()
            
    {
                InitializeComponent();
                GetForm1().Show();            
            }

        }

    就可以用Starter.GetForm1()得到f1啦。再把Starter设置为启动最小化,不在状态栏显示,我们就看不到它啦。

    PS:还发现任何事件的 XXXing()处理函数里面都可以把事件的 EventArgs e这个 e.Cancel 设为 true,就把这个事件取消了,竟然现在才知道这么有用的东东。。。-_-

  • 相关阅读:
    [MySQL] InnoDB三大特性之 插入缓冲
    字节对齐《c和指针》笔记包含位域结构体的内存对齐(32bit,GCC)
    反编译想到的代码安全问题
    剪切\编辑歌曲软件
    照片行【生活随笔】井冈山之行
    埃里克食品浅谈垃圾食品
    C++ 堆排序实现
    SQLite数据库
    全光网络的前世今生
    hdu1201(从出生长18岁经过多少天)
  • 原文地址:https://www.cnblogs.com/dxz/p/winform_cross_reference.html
Copyright © 2011-2022 走看看