委托+单例模式的小应用。

               不知道为什么心里一直很讨厌过分的将东西统一起来,不过领导安排咱也没办法。做软件中常用的是列表显示。WinForm中就是DataGridView,不过我用的是C1控件。怎么说呢这个控件速度比DataGridView快,功能也强大点不过资料很少,很多自己摸索。在客户添加了一行数据后想清楚此行,说起来比较简单就是Remove这一样然后加一行呗,不过添加此行时在下面的TextBox中添加了数量。在清除本行的时候应该把数量减去。

               代码如下,不罗嗦了。

              

代码
 1  public   class  C1FRow
 2      {
 3           private  DeleteCMSDelegate delRow;
 4           private   static  C1FRow instance  =   null ;
 5           private  C1FRow() { }
 6           public   static  C1FRow Create()
 7          {
 8               if  (instance  ==   null )
 9              {
10                  instance  =   new  C1FRow();
11              }
12               return  instance;
13          }
14 
15           public   void  DeleteCMS( ref  C1FlexGrid C1F, DeleteCMSDelegate del)
16          {
17               this .delRow  =  del;
18 
19              ContextMenuStrip smsmenu  =   new  ContextMenuStrip();
20              ToolStripItem tspmenu  =   new  ToolStripMenuItem();
21 
22              tspmenu.Text  =   " 清除本行 " ;
23              smsmenu.Items.Add(tspmenu);
24              C1F.ContextMenuStrip  =  smsmenu;
25              smsmenu.ItemClicked  +=   new  ToolStripItemClickedEventHandler(DeleteC1F);
26          }
27 
28           public   void  DeleteCMS( ref  C1FlexGrid C1F)
29          {
30              ContextMenuStrip smsmenu  =   new  ContextMenuStrip();
31              ToolStripItem tspmenu  =   new  ToolStripMenuItem();
32 
33              tspmenu.Text  =   " 清除本行 " ;
34              smsmenu.Items.Add(tspmenu);
35              C1F.ContextMenuStrip  =  smsmenu;
36              smsmenu.ItemClicked  +=   new  ToolStripItemClickedEventHandler(DeleteC1F);
37          }
38 
39           private   void  DeleteC1F( object  sender, ToolStripItemClickedEventArgs e)
40          {
41              ContextMenuStrip smsmenu  =  (ContextMenuStrip)sender;
42 
43              C1FlexGrid C1F  =  (C1FlexGrid)smsmenu.SourceControl;
44              C1F.RemoveItem(C1F.Row);
45              C1F.Rows.Count ++ ;
46 
47               if  ( ! PubManage.IsNullOrEmpty(delRow)) delRow();
48 
49          }
50      }
 
在控件处添加事件代码:
 
代码
 1  private   void  C1F1_MouseDown( object  sender, MouseEventArgs e)
 2          {
 3               if  (e.Button  ==  MouseButtons.Right  &&   base .ActionState  !=  cState.Lock)
 4              {
 5                  C1FRow.Create().DeleteCMS( ref  C1F1, CalAmount);
 6              }
 7               else
 8              {
 9                  C1F1.ContextMenuStrip  =   null ;
10              }       
11          }

 

 

 

你可能感兴趣的:(单例模式)