سؤال

هل من الممكن تعطيل الحمر على نافذة نماذج Windows، وإذا كان الأمر كذلك، كيف أفعل ذلك؟ أريد أن أحصل على نافذة غير شفافة لا يمكن النقر فوقها.

شكرا مقدما، كريستوف

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

المحلول

إذا كنت تتحدث إلى عملية مختلفة، فأنت بحاجة إلى إرسال واسترداد رسائل Windows.

http://www.c-sharpcorner.com/uploadfile/thmok/sendingwindowsmessageincsharp11262005042819am/seningwindowsmessageincsharp.aspx.

إلقاء نظرة على هذا الرابط:

باستخدام رسائل النافذة لتنفيذ خطافات النظام العالمي في C #http://www.codeproject.com/kb/system/wilsonsystemglobalhooks.aspx.

تتيح السنانير النظام العالمي تطبيق لاعتراض رسائل Windows المقصودة للتطبيقات الأخرى. لقد كان هذا دائما صعبة (مستحيلة، وفقا ل MSDN) لتنفيذها في C #. تحاول هذه المقالة تنفيذ خطافات النظام العالمي من خلال إنشاء غلاف DLL في C ++ الذي ينشر الرسائل إلى قائمة انتظار رسائل رسالة التثبيت.

نصائح أخرى

هل تريد نافذة لا يمكن نقلها؟ تعيين Formborderstyle إلى بلا.

حسنا، ما زلت لا أعرف الكثير عن حالة استخدامك، لكنني سآخذ طعنة على أي حال، وتقديم مثال بسيط.

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

    public FloatingForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }

يحتوي النموذج العائم على مربع نص اسمه floatingformtextbox، وزر باسم Button1. تبدو الفئة الجزئية للنموذج العائم مثل هذا:

public partial class FloatingForm : Form
{
    MainForm _mainForm;

    public FloatingForm()
    {
        InitializeComponent();
    }

    public FloatingForm(MainForm mainForm)
    {
        InitializeComponent();
        _mainForm = mainForm;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        _mainForm.DoSomething(floatingFormTextBox.Text);
    }
}

يحتوي النموذج الرئيسي فقط على مربع نص اسمه mainformtextbox. عند تحميل النموذج الرئيسي، يقوم بإنشاء مثيل للنموذج العائم، ويمر مرجعا إلى نفسه إلى التحميل الزائد الجديد للمنشئ الجديد. تبدو الفئة الجزئية للنموذج الرئيسي مثل هذا:

public partial class MainForm : Form
{
    FloatingForm _floatingForm;

    public MainForm()
    {
        InitializeComponent();
    }

    public void DoSomething(string text)
    {
        mainFormTextBox.Text = text;
        this.Refresh();
    }

    private void MainForm_Load(object sender, EventArgs e)
    {
        _floatingForm = new FloatingForm(this);
        _floatingForm.Show();
    }
}

الآن، عندما أضع بعض النص في مربع النص للنموذج العائم وانقر فوق الزر، يظهر النص في مربع النص للنموذج الرئيسي.

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