其实也没什么写的,半个月来一直在修改细节块,在POS系统的收银块动了近一个月了,处理快捷键,鼠标,总之业务逻辑细的让人窒息,再加上在WPF,第三方插件上动土,呼。。。。。。,不过半个月没写文章了,还是强烈要求自己今天随笔一篇。

论点一:wcf程序调试
在开发wcf应用程序是,服务可以寄存在应用程序上,或者windows 服务,或者iis,俺的项目现在是实现了这些常见的方式的。那么在调试的时候,我们只能调试启动一个project,要么启动服务端,要么启动客户端。开始,我是直接运行服务端应用程序,然后调试客户端,这样在服务端运行正常的情况下,开发客户端是没有问题的。不过由于单元测试没写全,服务端的服务还是有些问题,那么在调试客户端的时候是无法跟踪服务端的BUG的。由于一直debug客户端,形成了惯性作风了,就是想不出这么跟踪出服务端的方法。在那一刹那间,有同事说到:“反过来吗!debug服务端,然后直接运行编译好的客户端”。看来,以后脑瓜子要灵活点。。。。

论点二:创建用户控件事件
编程已经近两年了,一直是用哪个技术点,学那个技术点。以前只会注册,实现控件事件,还真的没做过创建事件。前面有些时间想了解,但是总不愿发多点时间,不过,要用的时候马上也弄明白了。其实,给一个控件创建事件和我做项目用哪个技术点一样。需要用到什么就创建(学习)什么。
首先,你要用一个控件的事件,你首先要注册一个事件
this.ucDemo.DemoSelected += new DemoEventHandle(ucDemo_DemoSelected);

在注册这个事件之前,你要先在控件里面什么一个事件
public event DemoEventHandle DemoSelected;

像创建一个对象一样,New一个对象New 关键字后面接类名,创建一个事件New 关键字后面的DemoEventHandle是DemoSelected事件的代理名。
那么,我们需要创建一个代理
public delegate void DemoEventHandle(object sender,DemoArg e);

像一般的Click事件那样,代理有两个对象,而第一个对象是事件当事者,另一个则是相关事件信息。我们还要做的是创建那个储存事件相关参数的对象,它也是一个类。
    public class DemoArg : System.EventArgs
    
{
        
public enum DemoType
        
{
            width,
            hight,
            color
        }


        
public DemoArg(DemoType demoType)
        
{
            DemoType1 
= demoType;
        }


        
public DemoType DemoType1 getset; }
    }

这样,一个控件的事件基本上装载完成了。不过,在控件内部,我们怎么激活,触发事件呢,下面假设鼠标双击控件就激活DemoSelecte事件。
        void UserControl_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        
{            
            InvoiceItemCellSelectedArg.InvoiceItemCellType type 
= InvoiceItemCellSelectedArg.InvoiceItemCellType.SKU;

                    type 
= InvoiceItemCellSelectedArg.InvoiceItemCellType.color;
                                InvoiceItemCellSelectedArg er 
= new InvoiceItemCellSelectedArg(type);
            
            
if (this.CellSelected != null)
            
{
                
this.CellSelected(this, er);
            }

        }


那么在第一步注册了DemoSelected事件后,就可以实现DemoSelected方法体了。
        void ucDemo_DemoSelected(object sender, DemoArg e)
        
{
            
switch (e.DemoType)
            
{
                
case InvoiceItemCellSelectedArg.InvoiceItemCellType.color :
                    Console.Write(
"color");                    
                      break;
                
case InvoiceItemCellSelectedArg.InvoiceItemCellType.width:
                    Console.Write(
"width");            
                    
break;
                
case InvoiceItemCellSelectedArg.InvoiceItemCellType.hight:
                    Console.Write(
"hight");                                
                      break;
            }

        }


时间不早了,要下了
posted on 2008-06-18 21:48  阿拉伯顶峰  阅读(276)  评论(0编辑  收藏  举报