WinForm系统开发个点心得(一)-2009-04-14
来源:互联网 发布:怎样当好一名淘宝客服 编辑:程序博客网 时间:2024/05/04 15:32
最近在公司开发一个winform 应用程序, MDI 模式。具体功能是实现串口通讯,用Chart演示数据。
在开发这个项目过程中的体会:
(1)当new 一个Form窗体类或其他类时,在构造函数中最好不要做与业务逻辑或稍复杂功能的处理,最多
做些参数初始化,事件注册,简单赋值处理。
理由:用一缺点说明。在构造函数中做复杂处理的话,当有异常发生时,系统容易崩溃,try...
catch 也不能避免这种运行中发生的异常。
(2)由于MDI窗体中一般会用菜单模式,所以MainForm中的设计时,使用几十种模式中的command模
式比较好。
主要代码如下:
using System;
namespace CsglChart.Common.Class
{
public delegate void MenuCommandHandler(System.Windows.Forms.MenuItem menuItem, string command);
public class clsMenuCommandSender
{
public clsMenuCommandSender()
{
this.m_Handler = new EventHandler(this.MenuClick);
}
}
public void Registe(ICommandHandler command, System.Windows.Forms.MenuItem menuItem)
{
BindItem item = new BindItem();
item.Command = command;
item.MenuItem = menuItem;
menuItem.Click += m_Handler;
m_Items.Add(item);
}
public ICommandHandler GetCommand(System.Windows.Forms.MenuItem menuItem)
{
foreach(BindItem item in m_Items)
{
if (item.MenuItem == menuItem)
{
return item.Command;
}
}
return null;
}
public System.Windows.Forms.MenuItem GetMenuItem(ICommandHandler command)
{
foreach(BindItem item in m_Items)
{
if (item.Command == command)
{
return item.MenuItem;
}
}
return null;
}
#region Inner code
private System.Collections.ArrayList m_Items = new System.Collections.ArrayList();
private class BindItem
{
public System.Windows.Forms.MenuItem MenuItem = null;
public ICommandHandler Command = null;
}
private System.EventHandler m_Handler = null;
private void MenuClick(object sender, System.EventArgs e)
{
foreach(BindItem item in m_Items)
{
if (item.MenuItem == sender)
{
item.Command.excute(sender);
break;
}
}
}
#endregion
}
public interface ICommandHandler
{
void excute(object sender);
}
}
由于工具条上的快捷按钮与菜单中的某些按钮功能一样,所以注册完菜单按钮之后,再把工具条的快捷按钮
与对应菜单按钮邦定即可。
this.toolBar.Buttons[15].Tag = this.mtWindow_Arrange;
toolBar.ButtonClick += new ToolBarButtonClickEventHandler(toolBar_ButtonClick);
private void toolBar_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
System.Windows.Forms.ToolBarButton toolBtn = e.Button;
if (toolBtn.Tag != null)
{
MenuItem item = (MenuItem)toolBtn.Tag;
item.PerformClick();
}
}
再有其他心得继续写。。。
- WinForm系统开发个点心得(一)-2009-04-14
- 开发几点心得
- 嵌入式开发的几点心得
- 51单片机开发的几点心得
- 51单片机开发的几点心得
- Java开发的30点心得
- 学生信息管理系统——几点心得
- VB.NET分层开发的几点心得
- SQL -- 八点心得
- jQuery几点心得
- 开始写点心得
- 写Windows服务的几点心得(C#/VS2003)
- SQL数据库设计的几点心得 (转载)
- 学习Perl闭包几点心得
- 博客开业写点心得
- WM_NCHITTEST的几点心得
- 规划第二点心得----合作
- 今天的几点心得
- sql server 数据库集群
- symbian src
- SQL Server2005创建远程服务器链接
- SQL Server死锁总结
- 09年连锁创业热门项目大全
- WinForm系统开发个点心得(一)-2009-04-14
- GridView 操作
- 自动循环播放多首FLV代码
- SerializeDicitionary, better xml Node
- Vista中的NTFS权限管理实例
- awstats 安装
- birt——chart图中设置百分比
- onbeforeunload方法和onunload方法的使用实例
- Compilation of Android kernel