.net21

Ref 和 Out 两者比较

共同点outref都是传递引用(内存地址),使用后都将改变原来参数的数值。

不同点ref是有进有出,out是只出不进(就是把一个参数通过传入方法时候,会自动清空原先所有,变为一个干净的参数):ref可以把参数的值传入函数,但无法通过out把一个数值传入方法中,ref参数在使用前必需初始化,而out不需要(初始化也没鸟用,早晚清空)。

可以看出,在没有初始化的情况下,out依旧可以传递,因为就算你初始化了还是被清空,而ref就不可以,在传递前必须进行初始化

最后大概总结一下:在我们需要多个返回值的时候,就用out,在需要修改修改原先引用的时候用ref!

为了便于传输数据。

类中默认是private

默认属性方法;自动填充私有字段。

在 Windows 窗体应用程序中,经常会在一个窗体中打开另一个窗体, 通过窗体上的不同菜单选择不同的操作,这种在一个窗体中打开另一个窗体的方式可以通过设置 MDI 窗体的方式实现。

MDI (Multiple Document Interface) 窗体被称为多文档窗体,它是很多 Windows 应用程序中常用的界面设计。

MDI 窗体的设置并不复杂,只需要将窗体的属性 IsMdiContainer 设置为 True 即可。

该属性既可以在 Windows 窗体的属性窗口中设置,也可以通过代码设置,这里在窗体加载事件 Load 中设置窗体为 MDI 窗体,代码如下。

this.IsMdiContainer = True;

此外,还可以在窗体类的构造方法中加入上面的代码。

 

其他信息: 线程间操作无效: 从不是创建控件“控件名”的线程访问它。

在多线程程序中,新创建的线程不能访问UI线程创建的窗口控件,如果需要访问窗口中的控件,有以下解决办法

1.可以在窗口构造函数中将CheckForIllegalCrossThreadCalls设置为 false

public Form1()
{
    InitializeComponent();
    CheckForIllegalCrossThreadCalls = false;
}

2.使用委托调用

声明委托:

private delegate void MyDelegateUI();

使用委托在多线程中执行:

MyDelegateUI d = delegate{
   this.stateLabel.Text = "正在读取目标文件";
};
this.stateLabel.Invoke(d);

这就是多线程界面元素操作的2种解决方法。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值