既然将一部份功能封装为一个用户控件A,当然是希望此用户控件能通用一些的,所以A并不知道调用它的到底是哪一个WinForm。但是调用A的WinForm可以都声明一个同名同参数的方法(如果能不同名更好)。
  请各位给点思路或者代码。谢谢!

解决方案 »

  1.   

    用户控件中如何调用WinForm中声明的方法?
    不是很理解
    只用过WinForm中调用用户控件中声明的方法
      

  2.   

    那用委托,例如:
    public delegate void MethodFun( strng sData );---- in your control class
    public class yourCtl
    {
         private MethodFun methodHandle;
         // Init "methodHandle" as to init your control object
    }
      

  3.   

    谢谢Knight94(愚翁)。
    不过现在我对委托还比较模糊,能不能给个简单的实例呢?在WinForm和UserControl里的相应代码大概怎么写?
      

  4.   

    具体要实现什么?为什么不在UserControl内部实现一个方法,然后外部调用呢?
      

  5.   

    我是在做一个分页的用户控件,想在WinForm中声明并实现查询数据并将数据显示于DataGrid里的方法。因为这个查询在不同的WinForm里有不同的查询条件,而且用于显示数据的DataGrid样式也可能很不相同。
    我的想法是在UserControl里显示分页信息及翻页按钮,当点击翻页按钮时,UserControl得到页码并将页码传递给WinForm中定义的方法,由WinForm的方法来更新DataGrid中数据。
    我在网上没找到类似的分页控件,只好想自己弄一个。
      

  6.   

    我觉得是否可以把DataGrid也整合到你的分页控件中去?让从数据库中取数的逻辑也封装到用户控件中去,因为,从封装角度看,其实绝大部分的从数据库中取数的逻辑也都是大同小异的,因此可以考虑,你的用户控件加一个属性,传入一个用于取数的Sql脚本,有了这个传进来的Sql脚本,你可以在用户控件内部处理分页需要的数据。
    我的考虑还可能欠妥,不过也不失为一个参考。
      

  7.   

    呵呵,sniper81(零度的火)的想法其实是可以满足一般的DataGrid显示的。不过暂时没时间去抽象了。
    继续静下心看了一下委托与事件,大概有了些了解,Fighting~~
      

  8.   

    to 不过现在我对委托还比较模糊,能不能给个简单的实例呢?sample code as follows:public delegate void MethodFun( string sData );//---- in your control class
    public class yourCtrl 
    {
    private MethodFun methodHandle;
    // Init "methodHandle" as to init your control object
    public yourCtrl( MethodFun mHandle )
    {
    // Init method handle
    methodHandle = mHandle;
    } private void CallingHandle()
    {
    methodHandle( "test" );// Call method as member function

    }
    //------in your form class// Define function for control
    private void frmMethodFun( string sData )
    {
    // Process data here
    }// Init your control
    yourCtrl myCtrl = new yourCtrl( new MethodFun( frmMethodFun ) );
      

  9.   

    谢谢Knight94(愚翁)!
    昨晚我用这样的办法基本实现了:在用户控件里自定义一个事件并触发,在WinForm里捕获并处理。现在还在调试中,等下再试试您的办法。