zoukankan      html  css  js  c++  java
  • 窗体中调用主窗体的方法和控件

    通过最简单的 在Form1 中写 Form2 frm=new Form2();可以通过frm掉用Form2中的非静态变量.但不能控制Form2的控件.也不能获取控件的值.用全局变量降低代码可读性,获取窗体1的textbox值并传递给窗体2,目前我只会2种麻烦的方法.

    1.看似最简单的, 

    form2:

    public string value;

    public Form2(string m)

    {InitializeComponent();

    value=m;

    }

    form1;

    Form2 frm=new Form2(Form1.textbox1.text);

    这个实现了把Form1的textbox1.text 赋值给了Form2中的value.

    这个方法不能传递方法,会占用很多资源.我还不知道如何用这个传递方法,委托.

    第2种;

    使用委托,委托对应相应的方法,调用方法的返回类型和传入参数必须和委托声明的类型一致.

    转载:http://www.cnblogs.com/pfcan66/archive/2012/09/12/2680596.html

    1.Form1:

    public string  a(string k)

    {

    retrun "Form1方法 "+k;

    }

    2.在Form2中建立和a方法一样类型的委托对象实例化

    public  delegate string  weituo(string m)--建立委托

    public weituo b  --实例化委托 

    3.在Form1中的Form_Load或者其他事件下写(如buton)

    Form2 frm=new Form2();

    frm.b=a;--把a 方法添加到委托b上

    4.在Form2中调用委托b;

    textbox.text=b("这是Form2页面");

    运行结果:

    委托方法就是每次调用不同类型方法都要重写一个.

    ----------------------------------类中调用主窗体的方法和控件------有时候不知道为啥不好使-----------------------------------------------

    要调用的窗体:

    public partial class Form1 : Form

    public static Form1 form1;--建立静态

    public Form1()
    {
    InitializeComponent();

    form1=this

    }

    然后在类中:用 Form1.form.引用的方法

     就是this(属性,方法),this始终指向当前对象的.在C# 中,函数或者属性都应该属于一个对象

    只要对对象中用this 就可以看到该对象的所有方法属性

  • 相关阅读:
    睿象云-智能运维平台
    leetcode-----53. 最大子序和
    leetcode-----50. Pow(x, n)
    leetcode-----49. 字母异位词分组
    leetcode-----48. 旋转图像
    leetcode-----47. 全排列 II
    leetcode-----46. 全排列
    leetcode-----44. 通配符匹配
    SpringMVC @RequestParam和@RequestBody的区别
    SpringMVC 接受页面传递参数
  • 原文地址:https://www.cnblogs.com/niubi007/p/6137791.html
Copyright © 2011-2022 走看看