Pon*_*dum 9 .net c# vb.net controls dynamic
在运行时向表单添加控件时,您可以执行以下任一操作:
Button btn = new Button();
//...
this.Controls.Add(btn);
Run Code Online (Sandbox Code Playgroud)
要么
Button x = new Button();
//...
btn.Parent = this;
Run Code Online (Sandbox Code Playgroud)
我曾经假设它们是相同的,这只是个人偏好的方式来做,但是有人在工作中提到第二种方法更糟糕,因为当表格处理时按钮不会被处理掉(假设没有事件)处理程序已被添加并被保留).
这对我来说没有多大意义,所以我在网上看了一下,但找不到任何说法.
有人知道答案还是能指出我正确的方向?
Jac*_*ing 12
由于推测是浪费时间,我抓住了我的Reflector副本并查看了实际的代码.Parent属性调用ParentInternal属性,该属性又调用value.Controls.Add(this)
/* this code is part of the .NET Framework was decompiled by Reflector and is copyright Microsoft */
internal virtual Control ParentInternal
{
get
{
return this.parent;
}
set
{
if (this.parent != value)
{
if (value != null)
{
value.Controls.Add(this);
}
else
{
this.parent.Controls.Remove(this);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
基于此代码,方法是等效的,这完全是优先考虑的问题.
| 归档时间: |
|
| 查看次数: |
3064 次 |
| 最近记录: |