比如一个窗体上有N个EDIT,而且都是空的,那么他们的类名和名称都一样的,我怎么才能得到自己想要的那个EDIT的句柄.
最后有个小例子让看下!

解决方案 »

  1.   

    楼上的,我指的是别人的程序,也就是我用FINDWINDOWEX来获得相关控件的句柄,不是自己的程序!
      

  2.   

    楼上说得对,在创建它们的时候就应该用不同的名字区分它们
    System.Context 里有个方法可以得到句丙,方法名我忘了,你自己找找看。!
      

  3.   

    楼上的,我指的是别人的程序,也就是我用FINDWINDOWEX来获得相关控件的句柄,不是自己的程序!
    ---------------------------------------
    你开始没这样说,我只能按你写的来理解。
      

  4.   

    所有控件怎么可能完全一样呢,总有不一样的属性把
    foreach所有的控件,找那个控件的特性和楼主想要的控件相同的不就行了?
      

  5.   

    FINDWINDOWEX 找某一具体的控件,找不到的话考虑用EnumWindow
      

  6.   

    Type t = textBox1.GetType();     // 定义  一个 类型
                foreach (Control ctrl in this.Controls)  // 窗体上所有控件
                    if (ctrl.GetType() == t)            // 如果控件是textbox
                    {
                        //
                    }
      

  7.   

    楼上的Type t = textBox1.GetType();
    难道 textBox1.GetType()  <> textBox2.GetType()楼主说:比如一个窗体上有N个EDIT,而且都是空的,那么他们的类名和名称都一样的。
    类名是一样的都是TextBox,但是控件名称能一样吗?MS能让你定义N个名称一样的TextBox??1、
    foreach(Control ctl in this.Controls)
    {
      if (ctl.Name == textBox1.Name)
       {
         //do something
         IntPtr hwnd = ctl.Handle;
       }
    }2、可以直接获得句柄,IntPtr hwnd = this.TextBox1.Handle3、也可以用API来做,只是稍麻烦一点。