View Full Version : 怎样在主窗体下调用有户控件


Kylin
03-30-2007, 01:10 AM
我做的是c/s结构的一款小软件,我想在主窗体下调用其他解决方案中生成好的用户控件。

gshzheng
03-30-2007, 01:54 AM
ⷽdll"Add Reference",Ϳֱʹ.

Ȼ,һʽ,ڹõĿؼ,Զ"Add Reference",
ڹоͻжӦڿؼͼ.

gshzheng
20070330


"Kylin" <Kylin@discussions.microsoft.com> дϢ:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
> c/sṹһСµɺõûؼ
>

Kylin
03-30-2007, 02:32 AM
谢谢
但是我想选中主窗体的下拉菜单然后调出其它解决方案的用户控件覆盖在主窗体菜单栏以下,然后点击其他菜单也照此办理。如果将用户控件放入其他Form中使用的话,那么我点击菜单调出的就是Form了,那有多少菜单就有多少Form了。另外在用户控件下如何关闭呢。请各位赐教

“gshzheng”编写:

> 把其它解方案的dll"Add Reference"进来,就可以直接使用了.
>
> 当然,还有一个方式是,在工具箱中填加你想用的控件,它会自动的"Add Reference",
> 这样在工具箱中就会有对应于控件的图标.
>
> gshzheng
> 20070330
>
>
> "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
> > 我做的是c/s结构的一款小软件,我想在主窗体下调用其他解决方案中生成好的用户控件。
> >
>
>
>

Kylin
03-30-2007, 02:40 AM
textbox连接sql数据库 如何对数据进行修改呢

“gshzheng”编写:

> 把其它解方案的dll"Add Reference"进来,就可以直接使用了.
>
> 当然,还有一个方式是,在工具箱中填加你想用的控件,它会自动的"Add Reference",
> 这样在工具箱中就会有对应于控件的图标.
>
> gshzheng
> 20070330
>
>
> "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
> > 我做的是c/s结构的一款小软件,我想在主窗体下调用其他解决方案中生成好的用户控件。
> >
>
>
>

gshzheng
03-30-2007, 05:17 AM
Ȼ,ȰǷһа(ΪDLLĿ),õ.

ؼformж̬.
private OtherDll.yourControl con
form_load()
{
con=new OtherDll.yourControl();
com.Parent=this.Panel1;//ðѿؼһpanel,ֱӷform
}

ؼǿؼ,ÿؼ,Ҫͼȥرմ(Ȼ).
˵,listboxĿؼ˹رմڵĹ,Ҳ̫.

>жٲ˵жForm
жٲ˵жFormδ,Ŀķ,
Ƿֿĺ.

gshzheng
20070330

gshzheng
03-30-2007, 05:17 AM
Ȼ,ȰǷһа(ΪDLLĿ),õ.

ؼformж̬.
private OtherDll.yourControl con
form_load()
{
con=new OtherDll.yourControl();
com.Parent=this.Panel1;//ðѿؼһpanel,ֱӷform
}

ؼǿؼ,ÿؼ,Ҫͼȥرմ(Ȼ).
˵,listboxĿؼ˹رմڵĹ,Ҳ̫.

>жٲ˵жForm
жٲ˵жFormδ,Ŀķ,
Ƿֿĺ.

gshzheng
20070330

Kylin
03-30-2007, 06:44 AM
我在用户控件中填写了您给的代码
然后在主窗体的菜单事件填写如下:
private void User_Click(object sender, System.EventArgs e)
{
ClassLibrary1.Inital.User cn = new ClassLibrary1.Inital.User();
cn.Form_load();

}
调试完成后单击次菜单没反应阿

“gshzheng”编写:

> 既然这样,先把它们放在一个解决方案中吧(做为DLL项目),这样好调试.
>
> 控件可以在form中动态生成.
> private OtherDll.yourControl con
> form_load()
> {
> con=new OtherDll.yourControl();
> com.Parent=this.Panel1;//最好把控件放在一个panel上,别直接放在form上
> }
>
> 控件就是控件,做好控件该做的事情,不要试图去关闭窗口(虽然能做到).
> 就是说,象listbox这样的控件如果有了关闭窗口的功能,想想也不太好.
>
> >那有多少菜单就有多少Form了
> 有多少菜单项就有多少Form未尝不可,功能相近的可以用上面的方法,其他的
> 还是分开的好.
>
> gshzheng
> 20070330
>
>
>
>

gshzheng
03-31-2007, 02:04 AM
Kylin,

formһЩܴusercontrol,һºô
1.ؼ
һЩݵб,дɿؼ,Ҫбform,ӽͺ.

2.ܵĶ
ڿؼ,еĹעڸؼҪʲô,ùϵϵ.
form,ֻѿؼӽ,ٿǵȥȡʲôݵȵ.

3.ΪϵĶ,

,,Ӻܶ,Ҵfrom,usercontrolԼform֮ͨѶ,൱
.
,мԭҪ
1.controlԱ,ӦֻDZ˵书,Ҫȥform.close()
˵Ķ.

2.controlԶ,Ӧ֪ԼܱЩform.ǸԵĽ,
,򲻵,Ҫž.

....

-------------------------------------------
ȷʵҪʵcontrolйرform,ҲǺܼ򵥵,ֻҪcontrolӵformþͿ.

1.Parent
Ȼ,control϶ͨParentһһҵform,ǿҲƼ,ΪcontrolParent
ǸformǸpanel,ֻõʱ֪.

2.controlжһform,controlʱ,ͨ԰ȥͿ.

gshzheng
20070331




"Kylin" <Kylin@discussions.microsoft.com> дϢ:8D2B7B48-7E7F-4B0F-AAC4-D180F6731D37@microsoft.com...
> ûؼдĴ
> ȻIJ˵¼д£
> private void User_Click(object sender, System.EventArgs e)
> {
> ClassLibrary1.Inital.User cn = new ClassLibrary1.Inital.User();
> cn.Form_load();
>
> }
> ɺ󵥻β˵ûӦ
>
> gshzhengд
>
>> Ȼ,ȰǷһа(ΪDLLĿ),õ.
>>
>> ؼformж̬.
>> private OtherDll.yourControl con
>> form_load()
>> {
>> con=new OtherDll.yourControl();
>> com.Parent=this.Panel1;//ðѿؼһpanel,ֱӷform
>> }
>>
>> ؼǿؼ,ÿؼ,Ҫͼȥرմ(Ȼ).
>> ˵,listboxĿؼ˹رմڵĹ,Ҳ̫.
>>
>> >жٲ˵жForm
>> жٲ˵жFormδ,Ŀķ,
>> Ƿֿĺ.
>>
>> gshzheng
>> 20070330
>>
>>
>>
>>
>

gshzheng
03-31-2007, 02:06 AM
֪˵ʲô?

ܵøо,Ƶĸ̫ܲ,ԾҪ̫Լ뷨.
Ȳһ±˵һЩdemo˵.

"Kylin" <Kylin@discussions.microsoft.com> дϢ:EF88E93A-4E3B-4967-B97D-BCD237A2D274@microsoft.com...
> textboxsqlݿ ζݽ޸
>
> gshzhengд
>
>> ⷽdll"Add Reference",Ϳֱʹ.
>>
>> Ȼ,һʽ,ڹõĿؼ,Զ"Add Reference",
>> ڹоͻжӦڿؼͼ.
>>
>> gshzheng
>> 20070330
>>
>>
>> "Kylin" <Kylin@discussions.microsoft.com> дϢ:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
>> > c/sṹһСµɺõûؼ
>> >
>>
>>
>>
>

Kylin
04-02-2007, 01:54 AM
先谢谢您的解答。也许我没说明白,我就是想问怎样修改数据库的数据。
“Kylin”编写:

> textbox连接sql数据库 如何对数据进行修改呢
>
> “gshzheng”编写:
>
> > 把其它解方案的dll"Add Reference"进来,就可以直接使用了.
> >
> > 当然,还有一个方式是,在工具箱中填加你想用的控件,它会自动的"Add Reference",
> > 这样在工具箱中就会有对应于控件的图标.
> >
> > gshzheng
> > 20070330
> >
> >
> > "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
> > > 我做的是c/s结构的一款小软件,我想在主窗体下调用其他解决方案中生成好的用户控件。
> > >
> >
> >
> >

Kylin
04-02-2007, 04:40 AM
如果是将usercontrol引用到form中的话如何引用呢 给个简单例子好吗

“Kylin”编写:

> 先谢谢您的解答。也许我没说明白,我就是想问怎样修改数据库的数据。
> “Kylin”编写:
>
> > textbox连接sql数据库 如何对数据进行修改呢
> >
> > “gshzheng”编写:
> >
> > > 把其它解方案的dll"Add Reference"进来,就可以直接使用了.
> > >
> > > 当然,还有一个方式是,在工具箱中填加你想用的控件,它会自动的"Add Reference",
> > > 这样在工具箱中就会有对应于控件的图标.
> > >
> > > gshzheng
> > > 20070330
> > >
> > >
> > > "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
> > > > 我做的是c/s结构的一款小软件,我想在主窗体下调用其他解决方案中生成好的用户控件。
> > > >
> > >
> > >
> > >

gshzheng
04-03-2007, 02:13 AM
Kylin,
Ҫusercontrol"õ"form,Ҫ
1.ϵAdd Reference
ǰѰusercontroldll(йܵ),"Դ".
(ϿΪǰǸdll,ñҵ)
ֻ,ʹdllеĿ.

2.߼ϵusing
dllе϶ռ,ʹǰ,Ϊ˷using dllnamespace;
һԲ,Ϊȫʹõʱnamespaceдȫ,
ֻдһЩcode.

gshzheng
20070403





"Kylin" <Kylin@discussions.microsoft.com> дϢ:333BE644-4628-4F9E-90FB-4EB8537A7CE7@microsoft.com...
> ǽusercontrolõformеĻ Ӻ
>
> Kylinд
>
>> ллĽҲû˵ףҾ޸ݿݡ
>> Kylinд
>>
>> > textboxsqlݿ ζݽ޸
>> >
>> > gshzhengд
>> >
>> > > ⷽdll"Add Reference",Ϳֱʹ.
>> > >
>> > > Ȼ,һʽ,ڹõĿؼ,Զ"Add
>> > > Reference",
>> > > ڹоͻжӦڿؼͼ.
>> > >
>> > > gshzheng
>> > > 20070330
>> > >
>> > >
>> > > "Kylin" <Kylin@discussions.microsoft.com> дϢ:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
>> > > > c/sṹһСµɺõûؼ
>> > > >
>> > >
>> > >
>> > >
>

Kylin
04-03-2007, 08:06 AM
您说得我知道理解,但是作完您说的物理和逻辑上的工作后,如何做呢,恳请给个简单的例子
“gshzheng”编写:

> Kylin,
> 要把usercontrol"引用到"form中来,需要
> 1.物理上的Add Reference
> 就是把包含usercontrol的dll(托管的),在"解决方案资源管理器"中填加引用.
> (本质上可以认为是把那个dll拷过来,让编译器能找到它)
> 只有填加了引用,才有了使用dll中的类的可能.
>
> 2.逻辑上的using
> dll中的类肯定有其命名空间,使用前,为了方便先在using dllnamespace;
> 当让这一步可以不用,因为你完全可以在使用的时候把namespace再写全,
> 只不过多写一些code罢了.
>
> gshzheng
> 20070403
>
>
>
>
>
> "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:333BE644-4628-4F9E-90FB-4EB8537A7CE7@microsoft.com...
> > 如果是将usercontrol引用到form中的话如何引用呢 给个简单例子好吗
> >
> > “Kylin”编写:
> >
> >> 先谢谢您的解答。也许我没说明白,我就是想问怎样修改数据库的数据。
> >> “Kylin”编写:
> >>
> >> > textbox连接sql数据库 如何对数据进行修改呢
> >> >
> >> > “gshzheng”编写:
> >> >
> >> > > 把其它解方案的dll"Add Reference"进来,就可以直接使用了.
> >> > >
> >> > > 当然,还有一个方式是,在工具箱中填加你想用的控件,它会自动的"Add
> >> > > Reference",
> >> > > 这样在工具箱中就会有对应于控件的图标.
> >> > >
> >> > > gshzheng
> >> > > 20070330
> >> > >
> >> > >
> >> > > "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
> >> > > > 我做的是c/s结构的一款小软件,我想在主窗体下调用其他解决方案中生成好的用户控件。
> >> > > >
> >> > >
> >> > >
> >> > >
> >
>
>
>

gshzheng
04-04-2007, 01:37 AM
õӦǿӿؼ,

>ⷽdll"Add Reference",Ϳֱʹ.
>
>Ȼ,һʽ,ڹõĿؼ,Զ"Add Reference",
>ڹоͻжӦڿؼͼ.
>
>gshzheng
>20070330

Ȼӹ,ϵformϼ.

ps:һû˵,⾡ϸһ.

gshzheng
20070404


"Kylin" <Kylin@discussions.microsoft.com> дϢ:524CF5B6-E89C-4E8D-9121-BC8D799FA636@microsoft.com...
> ˵֪⣬˵߼ϵĹأ򵥵
> gshzhengд
>
>> Kylin,
>> Ҫusercontrol"õ"form,Ҫ
>> 1.ϵAdd Reference
>> ǰѰusercontroldll(йܵ),"Դ".
>> (ϿΪǰǸdll,ñҵ)
>> ֻ,ʹdllеĿ.
>>
>> 2.߼ϵusing
>> dllе϶ռ,ʹǰ,Ϊ˷using dllnamespace;
>> һԲ,Ϊȫʹõʱnamespaceдȫ,
>> ֻдһЩcode.
>>
>> gshzheng
>> 20070403
>>
>>
>>
>>
>>
>> "Kylin" <Kylin@discussions.microsoft.com> дϢ:333BE644-4628-4F9E-90FB-4EB8537A7CE7@microsoft.com...
>> > ǽusercontrolõformеĻ Ӻ
>> >
>> > Kylinд
>> >
>> >> ллĽҲû˵ףҾ޸ݿݡ
>> >> Kylinд
>> >>
>> >> > textboxsqlݿ ζݽ޸
>> >> >
>> >> > gshzhengд
>> >> >
>> >> > > ⷽdll"Add Reference",Ϳֱʹ.
>> >> > >
>> >> > > Ȼ,һʽ,ڹõĿؼ,Զ"Add
>> >> > > Reference",
>> >> > > ڹоͻжӦڿؼͼ.
>> >> > >
>> >> > > gshzheng
>> >> > > 20070330
>> >> > >
>> >> > >
>> >> > > "Kylin" <Kylin@discussions.microsoft.com> дϢ:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
>> >> > > > c/sṹһСµɺõûؼ
>> >> > > >
>> >> > >
>> >> > >
>> >> > >
>> >
>>
>>
>>
>

Kylin
04-04-2007, 03:10 AM
我有很多用户控件完成不同的任务,然后向通过住窗体的菜单选项将他们调出来,可以将我的用户控件拖到form上,
但是那样的话就是有多少用户控间就有多少form了,是不是。我想的是点击住窗体菜单能调出我想要的完成特定任务的控件,就是一般c/s软件都能完成的。不知我是否说清楚了。谢谢
“gshzheng”编写:

> 你用的应该是可视控件,
>
> >把其它解方案的dll"Add Reference"进来,就可以直接使用了.
> >
> >当然,还有一个方式是,在工具箱中填加你想用的控件,它会自动的"Add Reference",
> >这样在工具箱中就会有对应于控件的图标.
> >
> >gshzheng
> >20070330
>
> 然后从工具箱中,拖到form上即可.
>
> ps:如果我还是没说清楚,请你把你的问题尽量详细的重述一遍贴上来吧.
>
> gshzheng
> 20070404
>
>
> "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:524CF5B6-E89C-4E8D-9121-BC8D799FA636@microsoft.com...
> > 您说得我知道理解,但是作完您说的物理和逻辑上的工作后,如何做呢,恳请给个简单的例子
> > “gshzheng”编写:
> >
> >> Kylin,
> >> 要把usercontrol"引用到"form中来,需要
> >> 1.物理上的Add Reference
> >> 就是把包含usercontrol的dll(托管的),在"解决方案资源管理器"中填加引用.
> >> (本质上可以认为是把那个dll拷过来,让编译器能找到它)
> >> 只有填加了引用,才有了使用dll中的类的可能.
> >>
> >> 2.逻辑上的using
> >> dll中的类肯定有其命名空间,使用前,为了方便先在using dllnamespace;
> >> 当让这一步可以不用,因为你完全可以在使用的时候把namespace再写全,
> >> 只不过多写一些code罢了.
> >>
> >> gshzheng
> >> 20070403
> >>
> >>
> >>
> >>
> >>
> >> "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:333BE644-4628-4F9E-90FB-4EB8537A7CE7@microsoft.com...
> >> > 如果是将usercontrol引用到form中的话如何引用呢 给个简单例子好吗
> >> >
> >> > “Kylin”编写:
> >> >
> >> >> 先谢谢您的解答。也许我没说明白,我就是想问怎样修改数据库的数据。
> >> >> “Kylin”编写:
> >> >>
> >> >> > textbox连接sql数据库 如何对数据进行修改呢
> >> >> >
> >> >> > “gshzheng”编写:
> >> >> >
> >> >> > > 把其它解方案的dll"Add Reference"进来,就可以直接使用了.
> >> >> > >
> >> >> > > 当然,还有一个方式是,在工具箱中填加你想用的控件,它会自动的"Add
> >> >> > > Reference",
> >> >> > > 这样在工具箱中就会有对应于控件的图标.
> >> >> > >
> >> >> > > gshzheng
> >> >> > > 20070330
> >> >> > >
> >> >> > >
> >> >> > > "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
> >> >> > > > 我做的是c/s结构的一款小软件,我想在主窗体下调用其他解决方案中生成好的用户控件。
> >> >> > > >
> >> >> > >
> >> >> > >
> >> >> > >
> >> >
> >>
> >>
> >>
> >
>
>
>

gshzheng
04-04-2007, 06:28 AM
Kylin,

ǾǶ̬İĿؼصform,֪ǰĻָиԭ㿴û.

>ǽusercontrolõformеĻ Ӻ

̬غܼ(Ҳnew һ,ȻParent)
youdll.YourControl con=new yourdll.YourControl();
con.Parent=this.Panel//formиPanel

ȻҪúʵ˼·,Ҫ϶ЩԽ,ҸһЩʾ
1. еĿؼ̳һ㶨Ļ;
2.form,ֻЩ,Ǿ.
3.controlʵͨFactoryMethodģʽ,formֱдnew
yourdll.youControl();

һ˼·,Բٶдform,Ҳϲдform,
controlд(ܾ̬ĺһЩ),
public static void showForm()
{
Form frm=new Form();
Panel pan=new Panel();
pan .Parent=frm;
pan.Dock=dockClient;

//иõ׵Panel,Exitť

YourControl con=new YourControl();
con.Parent=pan;

frm.Show();
}
˼·Ҫ,άѶ,codeҲһЩ.
Ҿõдform.

gshzheng
20070404





"Kylin" <Kylin@discussions.microsoft.com> дϢ:125BF9F8-7631-468B-BAD9-DDE866927237@microsoft.com...
> кܶûؼɲͬȻͨסIJ˵ѡǵԽҵûؼϵformϣ
> ĻжûؼжformˣDzǡǵס˵ܵҪضĿؼһc/sɵġ֪Ƿ˵ˡлл
> gshzhengд
>
>> õӦǿӿؼ,
>>
>> >ⷽdll"Add Reference",Ϳֱʹ.
>> >
>> >Ȼ,һʽ,ڹõĿؼ,Զ"Add
>> >Reference",
>> >ڹоͻжӦڿؼͼ.
>> >
>> >gshzheng
>> >20070330
>>
>> Ȼӹ,ϵformϼ.
>>
>> ps:һû˵,⾡ϸһ.
>>
>> gshzheng
>> 20070404
>>
>>
>> "Kylin" <Kylin@discussions.microsoft.com> дϢ:524CF5B6-E89C-4E8D-9121-BC8D799FA636@microsoft.com...
>> > ˵֪⣬˵߼ϵĹأ򵥵
>> > gshzhengд
>> >
>> >> Kylin,
>> >> Ҫusercontrol"õ"form,Ҫ
>> >> 1.ϵAdd Reference
>> >> ǰѰusercontroldll(йܵ),"Դ".
>> >> (ϿΪǰǸdll,ñҵ)
>> >> ֻ,ʹdllеĿ.
>> >>
>> >> 2.߼ϵusing
>> >> dllе϶ռ,ʹǰ,Ϊ˷using dllnamespace;
>> >> һԲ,Ϊȫʹõʱnamespaceдȫ,
>> >> ֻдһЩcode.
>> >>
>> >> gshzheng
>> >> 20070403
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> "Kylin" <Kylin@discussions.microsoft.com> дϢ:333BE644-4628-4F9E-90FB-4EB8537A7CE7@microsoft.com...
>> >> > ǽusercontrolõformеĻ Ӻ
>> >> >
>> >> > Kylinд
>> >> >
>> >> >> ллĽҲû˵ףҾ޸ݿݡ
>> >> >> Kylinд
>> >> >>
>> >> >> > textboxsqlݿ ζݽ޸
>> >> >> >
>> >> >> > gshzhengд
>> >> >> >
>> >> >> > > ⷽdll"Add Reference",Ϳֱʹ.
>> >> >> > >
>> >> >> > > Ȼ,һʽ,ڹõĿؼ,Զ"Add
>> >> >> > > Reference",
>> >> >> > > ڹоͻжӦڿؼͼ.
>> >> >> > >
>> >> >> > > gshzheng
>> >> >> > > 20070330
>> >> >> > >
>> >> >> > >
>> >> >> > > "Kylin" <Kylin@discussions.microsoft.com> дϢ:31683B53-7426-4D7A-A7EB-11368488CDCF@microsoft.com...
>> >> >> > > > c/sṹһСµɺõûؼ
>> >> >> > > >
>> >> >> > >
>> >> >> > >
>> >> >> > >
>> >> >
>> >>
>> >>
>> >>
>> >
>>
>>
>>
>

秦风意动
04-04-2007, 07:12 PM
》2.control是相对独立,它不应该知道自己可能被哪些form引用.否则就是个很明显的交叉引
》用,
》这在设计上来讲,除非万不得以,是要杜绝的.

Form 持有 Control
个人觉得通过IoC 来反转控制可以实现交互,
可以参考本页《如何注册动态添加的程序集中的控件的事件。和程序集如何得到主窗体的某些参数 》中的做法:
可以按一定的原则避免循环引用



“gshzheng”编写:

> Kylin,你好
>
> 把form的一些功能代理给独立的usercontrol,有一下好处
> 1.控件的重用
> 象一些数据的列表,独立的写成控件,可以在若干需要列表的form中,把它填加进来就好了.
>
> 2.功能的独立
> 在控件中,把所有的关注都放在在个控件要解决什么问题上,不用关系与外界的联系.
> 而在form中,只把控件加进来后,不再考虑到哪里去取什么数据等等.
>
> 3.因为功能上的独立,代码回相对清晰
>
> 但,这样做,代码量会增加很多,而且处理起from,usercontrol以及其它form之间的通讯来,会相当
> 烦琐.
> 而且,有几个原则要遵守
> 1.control是相对被动,它应该只能是被别人调用其功能,而不要主动去调用form.close()等其它
> 别人的东西.
>
> 2.control是相对独立,它不应该知道自己可能被哪些form引用.否则就是个很明显的交叉引用,
> 这在设计上来讲,除非万不得以,是要杜绝的.
>
> ....
>
> -------------------------------------------
> 你如果确实要实现在control中关闭form,也是很简单的,只要让control拥有form的引用就可以了.
> 两个方法
> 1.用Parent属性
> 很显然,control肯定可以通过Parent一层一层的能找到form,但强烈不推荐用,因为control的Parent
> 到底是个form还是个panel,只有在用的时候才知道.
>
> 2.在control中定义一个form的引用,在control构造的时候,或通过属性把它传进去就可以了.
>
> gshzheng
> 20070331
>
>
>
>
> "Kylin" <Kylin@discussions.microsoft.com> 写入消息新闻:8D2B7B48-7E7F-4B0F-AAC4-D180F6731D37@microsoft.com...
> > 我在用户控件中填写了您给的代码
> > 然后在主窗体的菜单事件填写如下:
> > private void User_Click(object sender, System.EventArgs e)
> > {
> > ClassLibrary1.Inital.User cn = new ClassLibrary1.Inital.User();
> > cn.Form_load();
> >
> > }
> > 调试完成后单击次菜单没反应阿
> >
> > “gshzheng”编写:
> >
> >> 既然这样,先把它们放在一个解决方案中吧(做为DLL项目),这样好调试.
> >>
> >> 控件可以在form中动态生成.
> >> private OtherDll.yourControl con
> >> form_load()
> >> {
> >> con=new OtherDll.yourControl();
> >> com.Parent=this.Panel1;//最好把控件放在一个panel上,别直接放在form上
> >> }
> >>
> >> 控件就是控件,做好控件该做的事情,不要试图去关闭窗口(虽然能做到).
> >> 就是说,象listbox这样的控件如果有了关闭窗口的功能,想想也不太好.
> >>
> >> >那有多少菜单就有多少Form了
> >> 有多少菜单项就有多少Form未尝不可,功能相近的可以用上面的方法,其他的
> >> 还是分开的好.
> >>
> >> gshzheng
> >> 20070330
> >>
> >>
> >>
> >>
> >
>
>
>

gshzheng
04-05-2007, 01:52 AM
ǵ,ҲڿIOCĶ.ϣп.

"ط⶯" <@discussions.microsoft.com> дϢ:9F6CDF07-05D4-4F7D-8622-008AFE44046B@microsoft.com...
> 2.controlԶ,Ӧ֪ԼܱЩform.ǸԵĽ
> ,
> ,򲻵,Ҫž.
>
> Form Control
> ˾ͨIoC תƿʵֽ
> Բοҳעᶯ̬ӵijеĿؼ¼ͳεõijЩ е
> ԰һԭѭ