这几天在开发WinForm程序中遇到几个看起来比较诡异的问题。
一个MDI子窗体带一个MenuStrip控件,添加了几个菜单项。在设计器中看起来完全正常,但是一运行,只能看见菜单栏,菜单项却无法显示。几经折腾,发现菜单项被合并到了MDI父窗体的菜单栏。这是由于Menustrip的一个叫做AllowMerge的属性,默认值是TRUE的缘故,改为FALSE就正常了。事后一想,我们常看到的标准MDI程序确实是这样,只有父窗体有菜单栏,随打开不同的子窗体,父窗体的菜单项相应变化。只不过我们这个MDI子窗体更独立一点,希望有自己的菜单栏。
还有一回,发现窗体不会响应鼠标事件。原来是因为窗体上铺满了Panel等控件,这些控件截获了鼠标事件,窗体自然不会响应。正常的做法是在控件上去响应鼠标事件。
通过这几件事,发现自己还是对WinForm的一般开发方法不熟悉。WinForm的许多操作简单易懂,能很快上手。但是也不能完全随心所欲,或者说,所想所做的可能并不是合理合适的。如果有时间,还是应该从头学习一下WinForm开发。另外,要是有一本像《深入浅出MFC》那样的,《深入浅出WinForm》,想必也会对开发有很大帮助,只是目前还没有发现。
最近在做一些很繁琐,自己不太喜欢,但对公司比较有帮助的开发工作。我没有选择迅速完成,而是静下心来,仔细规划,写些整齐的,带注释的代码,写完了也比较有成就感。而且渐渐对原本不喜欢的工作、技术产生了兴趣。又一次验证了我原来的想法,任何事都是有些搞头、有些趣味在里头的。不过也许也只是胸无大志,没有目标的表现罢了,呵呵。