首页 新闻 会员 周边 捐助

关于控件和窗体继承的问题???

0
悬赏园豆:100 [已解决问题] 解决于 2008-09-12 13:05
<P>写了一个控件。要在这个控件内调用一个窗体。<BR>基窗口类为baseform<BR>控件为control<BR>控件内有这样的一个属性</P> <P>private baseform _mform;<BR>public baseform mForm<BR>{<BR>get{return this._mform;}<BR>set{this._mform=value;}<BR>}</P> <P>class bform:baseform//继承基窗体类。<BR>{<BR>//在此窗体内添加了,不少的控件和属性。<BR>}</P> <P>在一个test和程序内。对控件进行测试。<BR>先new 一个bform的窗体变量。<BR>bform1=new bform();</P> <P>设置控件的mform属性为bform1,<BR>control1.mform=bform1;<BR>但是在显示的时候,为什么显示的baseform而不是bform呢。没有了bform里的控件。<BR>我的设计哪有问题嘛???</P> <P>&nbsp;</P>
秋色的主页 秋色 | 初学一级 | 园豆:47
提问于:2008-07-21 11:07
< >
分享
最佳答案
0
control1.mform=new bform(), bform testbform=new bform() 但control1.mform != testbform 因为control1.mform只保留baseform的属性
刘勇飞 | 菜鸟二级 |园豆:335 | 2008-07-30 20:32
其他回答(4)
0
理论上不应该这样,你可以监视一下,看看mForm的Controls属性的值是不是有问题。 做了一个简单的测试,你说的情况没有重现 [code] public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Form _form; public Form Form2 { get { return _form; } set { _form = value; } } private void Form1_Load(object sender, EventArgs e) { if (Form2 == null) { //Form2里面只有一个label Form2 = new Form2(); } //这里会显示form2,里面有一个label,没有出现丢失控件的问题 Form2.Show(); } } [/code]
玉开 | 园豆:8822 (大侠五级) | 2008-07-21 11:26
0
mForm为baseform类型,所以不显示bform里的控件
吴畏 | 园豆:426 (菜鸟二级) | 2008-07-21 11:33
0
还是将你的源代码贴出来说。从你的描述来看,没有问题啊。 另外,关于LostFocus事件,MSDN中有如下的描述: -------------------- GotFocus 和 LostFocus 事件是关联于 WM_KILLFOCUS 和 WM_SETFOCUS Windows 消息的低级别焦点事件。通常,GotFocus 和 LostFocus 事件仅在更新 UICues 或编写自定义控件时使用。而 Enter 和 Leave 事件应该用于除 Form 类(该类使用 Activated 和 Deactivate 事件)之外的所有控件。有关 GotFocus 和 LostFocus 事件的更多信息,请参见位于 http://www.microsoft.com/china/msdn/library/default.aspx 上的 MSDN Library 中“Platform SDK Documentation”(Platform SDK 文档)的“Keyboard Input Reference”(键盘输入参考)部分中的 WM_SETFOCUS 和 WM_KILLFOCUS 主题。 -------------------------- 建议你使用Deactivate事件。
Colin Han | 园豆:3041 (老鸟四级) | 2008-07-21 18:20
0
还是继承概念没理解好。 虽然是子类,但是当把子类对象赋值给父类对象时,并不意味着,它就是子类对象,对于在子类中添加的东西,在它里面是显示不出来的。它只知道从它那继承了的东西。 表述的不太好,不知道你否理解。 可以考虑,增加一个子类的属性。这样比较笨。 还可以考虑用反射+配置文件来动态生成对象。 如果有争议可以给我留言。
hackenliu | 园豆:600 (小虾三级) | 2008-07-28 18:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册