سؤال

تعرفون جميعًا "لديك إجابات جديدة!" شريط الإخطار على ذلك. أود نفس الشيء في شكل ، ويفضل أن يكون سلسًا. هل هناك طريقة بسيطة؟ أو هل يجب علي إنشاء هذا بنفسي تمامًا؟

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

الرسائل التي أريد عرضها تنتمي إلى نموذج ، وليس إلى التطبيق بأكمله

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

المحلول

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

ثم عندما تحصل على إشعار ، ارسم المحتويات في لوحة الإخطار وإنشاء نظام. توقف عندما تكون اللوحة من الارتفاع المطلوب. افعل الشيء نفسه مع ارتفاع سلبي لإخفاء اللوحة.

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

نصائح أخرى

يمكنك ببساطة تحريك لوحة تسقط من أعلى منطقة عميل النموذج.

زيادة إحداثيات Y للوحة في حلقة موقوتة. ستبدأ اللوحة غير مرئية وتصبح مرئية ببطء. (ستبدأ اللوحة في -panel.hight وتعمل في طريقها إلى 0.)

إذا كنت تريد تقييده على شكل معين ، فيجب أن يكون من السهل وضع ملف Panel على النموذج مع Dock ضبط ل DockStyle.Top, ، ثم ضع تسمية للوصف وزر يخفيه.

ليس من الصعب القيام به مع لوحة أو USERCONTROL ، ولكن الجزء اللطيف هو جعل محتويات النموذج تنزلق عندما ينزلق الشريط لأسفل. لتبسيط أنني سأستخدم splitcontainer. يحتوي Splitpanel العلوي على شريط الإخطار ومسافة الخائن في البداية 0. قم بتزويد الشريط بعرضه عن طريق زيادة خاصية SplitterDistance. إن القيام بذلك بهذه الطريقة يعني أنه لا داعي للقلق بشأن جعل المحتويات الأخرى للنموذج تنزلق لأسفل (وهي مشكلة لأنها تمنعك من استخدام الالتحام).

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

إظهار الشريط:

    for (int i = 0; i <= 33; i++)
    {
        splitContainer1.SplitterDistance = i;
        Thread.Sleep(5);
        Refresh();
    }

إخفاء الشريط:

    for (int i = 33; i >= 0; i--)
    {
        splitContainer1.SplitterDistance = i;
        Thread.Sleep(5);
        Refresh();
    }

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

كنت أبحث عن نفس الشيء الآن ووجدت هذا في مشروع الرمز

لم أستخدمها بعد ، لذلك ليس لدي أي فكرة عن مدى صلابة ذلك.

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