سؤال

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

#region formDragResize
    private Point startDrag = new Point(0, 0);
    private bool resize = false;
    private void rightSideBarMid_MouseDown(object sender, MouseEventArgs e)
    {
        this.startDrag = e.Location;
        this.resize = true;
    }

    private void rightSideBarMid_MouseUp(object sender, MouseEventArgs e)
    {
        this.resize = false;
    }

    private void rightSideBarMid_MouseMove(object sender, MouseEventArgs e)
    {
        if (this.resize)
        {
            Point p1 = new Point(e.X, e.Y);
            Point p2 = this.PointToScreen(p1);
            this.Width = p2.X - this.startDrag.X;
        }
    }
 #endregion

أنا جديد جدًا عندما يتعلق الأمر بتشكيل الألم وهكذا يتم تقدير أي مساعدة.

شكرًا!

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

المحلول

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

ومع ذلك ، لا يتضمن WinForms أحداث الطلاء غير العميل ، لذلك سيتعين عليك تجاوز WNDProc والتعامل مع رسائل NC_* بنفسك ، أو استخدام مكتبة طرف ثالث تقوم بذلك.

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