如何引用一个组件的父容器对象(Form对象)? 在WinForm中,引用一个控件的父对象用ControlName.Parent如果是我有一个组件(不可见的,类似于printDialog组件),通过这个组件想得到Form对像时应该怎么处理?新手入门,请大家指导. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以这样Control p = this.Parent;while(p.Parent != null) p = this.Parent;//这里p就是最顶层的容器Form form = p as Form;form就是窗体 如果是control,一楼的方法挺好的。如果不是,那建议你把父窗体对象传过去;如果传过去不现实,传句柄。消息在窗体之间是能行无阻的。 public class MyComponent : Component{ //重载这个属性 public override ISite Site { get { return base.Site; } set { if (value == null) { return; } IDesignerHost host = value.GetService(typeof(IDesignerHost)) as IDesignerHost; if (host != null) { IComponent componentHost = host.RootComponent; if (componentHost is ContainerControl) { Parent = componentHost as ContainerControl; } } base.Site = value; } } public ContainerControl Parent { get; set; } public void Test() { //Parent就是窗体 MessageBox.Show((Parent == null).ToString()); }}需要重载这个属性。你就可以访问父窗体了。你把上面代码复制,粘贴到你项目中,编译,拖到窗体中。可以通过Parent访问到组建的父窗体。你也可以在组建内部通过Parent访问到父窗体。 递归算法的原理是什么? C# 用户控件和自定义控件的选择 C# 导出EXCEL 报错hresult:0x800a03ec Datagridview的一个小问题? 如何在执行询环查询操作中,更新窗体中的表格数据和状态条的状态? 如何在进入windows2000前先运行我的程序? 智能设备项目打包成cab后,应用程序和快捷方式图标如何修改?(在线等,急急急!!!) Json怎么解析下面的数据? C# 继续文件并插入到数据库 tooltip如何对treeview的每一个节点设置啊,很迷惑,不知道如何下手。(WinForm) C#如何检测Ftp服务器空间已满 急求 多个结构体信息的归并问题~~~
Control p = this.Parent;
while(p.Parent != null) p = this.Parent;
//这里p就是最顶层的容器
Form form = p as Form;
form就是窗体
如果不是,那建议你把父窗体对象传过去;如果传过去不现实,传句柄。消息在窗体之间是能行无阻的。
{
//重载这个属性
public override ISite Site
{
get
{
return base.Site;
}
set
{
if (value == null)
{
return;
}
IDesignerHost host = value.GetService(typeof(IDesignerHost)) as IDesignerHost;
if (host != null)
{
IComponent componentHost = host.RootComponent;
if (componentHost is ContainerControl)
{
Parent = componentHost as ContainerControl;
}
}
base.Site = value;
}
} public ContainerControl Parent { get; set; } public void Test()
{
//Parent就是窗体
MessageBox.Show((Parent == null).ToString());
}
}需要重载这个属性。你就可以访问父窗体了。
你把上面代码复制,粘贴到你项目中,编译,拖到窗体中。可以通过Parent访问到组建的父窗体。你也可以在组建内部通过Parent访问到父窗体。