سؤال

وكيف يمكنني معرفة ما إذا كان hWnd عنصر ينتمي الى واحدة من الضوابط طفلي؟

وأريد أن أفعل شيئا مثل:

if(this.Controls.Find(hWnd) != null) return false;
هل كانت مفيدة؟

المحلول

وهناك الدالة Win32 لذلك: IsChild

نصائح أخرى

ويبدو وكأنه فرصة كبيرة لاستخدام العودية. إضافة هذه الوظيفة إلى الدرجة الديك:

  private bool IsChild(System.Windows.Forms.Control control, System.IntPtr hWnd)
  {
     if(control.Handle == hWnd)
        return(true);

     foreach (System.Windows.Forms.Control child in control.Controls)
     {
        if (IsChild(child, hWnd))
           return (true);
     }
     return (false);
  }

ويمكنك بعد ذلك استخدام هذه الوظيفة لبحث هذه الفئة الأصل عن أي عناصر التحكم التابعة مع hWnd عنصر محدد:

this.IsChild(this, hWnd);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top