مشاريع - بناء C#.NET تطبيق ويندوز مع وجهات نظر متعددة




مشاريع الفيجوال بيسك جاهزة (4)

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

التطبيق هو في الأساس توقيت جمع البيانات. أنه يحتوي على عرض البداية مع زر لبدء القياس. أثناء القياس التطبيق لديه خمسة وجهات نظر مختلفة اعتمادا على المعلومات التي يريد المستخدم أن يرى.

ما هي أفضل ممارسة للتبديل بين وجهات النظر؟ من البداية إلى التشغيل؟ بين طرق العرض قيد التشغيل؟

الأفكار:

  • استخدم نموذجا واحدا واخفي عناصر التحكم وأظهرها
  • استخدام نموذج بداية واحدة ثم نموذج مع تابكونترول
  • استخدم ستة أشكال منفصلة

الطريقة التي غالبا ما تستخدم هو في الواقع قبل الإعداد جميع الضوابط بلدي على الفردية "لوحة" الضوابط وثم إظهار وإخفاء هذه اللوحات كما أحتاج إليها.

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


عادة ما تكون الأشكال المبوبة جيدة ... ولكن فقط إذا كنت تريد أن يكون المستخدم قادرا على رؤية أي عرض في أي وقت ... ويبدو وكأنه قد لا.

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

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


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

ثم عندما أريد أن التبديل بين a'view 'كنت قفص الاتهام إلى لوحة على الشكل الرئيسي .. رمز يبدو قليلا مثل هذا.

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

public partial class MainForm : Form
{
    public enum FormViews
    {
        A, B
    }
    private MyViewA viewA; //user control with view a on it 
    private MyViewB viewB; //user control with view b on it

    private FormViews _formView;
    public FormViews FormView
    {
        get
        {
            return _formView;
        }
        set
        {
            _formView = value;
            OnFormViewChanged(_formView);
        }
    }
    protected virtual void OnFormViewChanged(FormViews view)
    {
        //contentPanel is just a System.Windows.Forms.Panel docked to fill the form
        switch (view)
        {
            case FormViews.A:
                if (viewA != null) viewA = new MyViewA();
                //extension method, you could use a static function.
                this.contentPanel.DockControl(viewA); 
                break;
            case FormViews.B:
                if (viewB != null) viewB = new MyViewB();
                this.contentPanel.DockControl(viewB);
                break;
        }
    }

    public MainForm()
    {

        InitializeComponent();
        FormView = FormViews.A; //simply change views like this
    }
}

public static class PanelExtensions
{
    public static void DockControl(this Panel thisControl, Control controlToDock)
    {
        thisControl.Controls.Clear();
        thisControl.Controls.Add(controlToDock);
        controlToDock.Dock = DockStyle.Fill;
    }
}





windows