كيف يمكنني معرفة ما إذا كان يتم عرض النموذج الخاص بي بعد الشاشة؟

StackOverflow https://stackoverflow.com/questions/731903

سؤال

لذلك لدي نموذجان، Mainform و Extrform.
تم نقل Extraform دائما إلى اليمين في Mainform عند تهيئة Mainform
في بعض الأحيان يشغل KnowForm، يتم الضغط على كلا الشاشات وإيقاف تشغيل الشاشة أبدا. أود منع هذا إن أمكن. كيف يمكنني أن أفعل ذلك؟ يجب أن تدعم الشاشات المزدوجة، التي قد تكون تتمثل أو لا تحتوي على مسافة بينها (أي شاشة واحدة من 20 بكسل إلى يسار الشاشة 2).

كيف يمكنني أن أفعل هذا؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام فئة الشاشة للعمل حيث تكون نافذتك نسبة إلى سطح المكتب. تحتوي فئة الشاشة على طريقة فاصلة من نوعها، حتى تتمكن من معرفة أي شاشة يجب أن تقوم بتحديد النموذج الخاص بك (عن طريق تمرير خاصية حدود النموذج الخاص بك في).

يحتوي كل كائن شاشة على خاصية حدود، والتي يمكنك استخدامها للمقارنة مع موقع وحجم النافذة الخاصة بك، وضبطها وفقا لذلك.

نصائح أخرى

يعتمد ذلك على ما تريد حدوثه عند دفع إلغاء التنفيذ إلى ما بعد حدود الشاشة (الشاشة).

ومع ذلك، لمعرفة ما إذا كان يتم إيقاف تشغيله أم لا، فهو بسيط للغاية باستخدام System.windows.forms.cscreenss. ثم يمكنك إجراء التحقق من الحدود مثل ذلك:

        foreach (var screen in Screen.AllScreens)
        {
            if(screen.Bounds.Contains(this.Bounds))
            {
                Console.WriteLine("Device "+screen.DeviceName+" contains form!");
            }
        }

الرمز يفترض أن تكون في شكل. لاحظ أن هذا الرمز يطبع فقط أن الشاشة تحتوي على النموذج إذا كان النموذج موجود بالكامل على الشاشة. ولكن يجب أن يكون هذا سهل الإصلاح، اعتمادا على احتياجاتك.

ربما تعطيك خاصية DeskTopLocation في أشكالك فكرة عن ما يحدث مع ما يحدث معهم

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top