Click here to Skip to main content
15,914,419 members
Home / Discussions / C#
   

C#

 
GeneralRe: Ensure a parameter is not null Pin
S. Senthil Kumar13-May-08 17:36
S. Senthil Kumar13-May-08 17:36 
GeneralRe: Ensure a parameter is not null Pin
Vikram A Punathambekar13-May-08 19:08
Vikram A Punathambekar13-May-08 19:08 
GeneralRe: Ensure a parameter is not null Pin
Malcolm Smart13-May-08 21:24
Malcolm Smart13-May-08 21:24 
GeneralRe: Ensure a parameter is not null Pin
S. Senthil Kumar13-May-08 22:38
S. Senthil Kumar13-May-08 22:38 
GeneralRe: Ensure a parameter is not null Pin
Vikram A Punathambekar13-May-08 19:12
Vikram A Punathambekar13-May-08 19:12 
AnswerRe: Ensure a parameter is not null Pin
PIEBALDconsult13-May-08 13:23
mvePIEBALDconsult13-May-08 13:23 
QuestionApp.Config Sharing (sort of) Pin
#realJSOP13-May-08 5:17
professional#realJSOP13-May-08 5:17 
AnswerRe: App.Config Sharing (sort of) Pin
Miszou13-May-08 7:12
Miszou13-May-08 7:12 
GeneralRe: App.Config Sharing (sort of) Pin
#realJSOP13-May-08 8:31
professional#realJSOP13-May-08 8:31 
GeneralRe: App.Config Sharing (sort of) Pin
Miszou13-May-08 9:04
Miszou13-May-08 9:04 
GeneralRe: App.Config Sharing (sort of) Pin
#realJSOP13-May-08 10:57
professional#realJSOP13-May-08 10:57 
GeneralRe: App.Config Sharing (sort of) Pin
Miszou14-May-08 6:45
Miszou14-May-08 6:45 
QuestionException Handling Pin
jchigg200013-May-08 5:13
jchigg200013-May-08 5:13 
AnswerRe: Exception Handling Pin
jchigg200013-May-08 5:43
jchigg200013-May-08 5:43 
QuestionMenuStrip -> Open new child form Pin
benjamin yap13-May-08 4:31
benjamin yap13-May-08 4:31 
AnswerRe: MenuStrip -> Open new child form Pin
Gareth H13-May-08 4:38
Gareth H13-May-08 4:38 
GeneralRe: MenuStrip -> Open new child form Pin
benjamin yap13-May-08 4:48
benjamin yap13-May-08 4:48 
GeneralRe: MenuStrip -> Open new child form Pin
Gareth H13-May-08 4:52
Gareth H13-May-08 4:52 
GeneralRe: MenuStrip -> Open new child form Pin
benjamin yap13-May-08 5:00
benjamin yap13-May-08 5:00 
AnswerRe: MenuStrip -> Open new child form Pin
darkelv13-May-08 5:13
darkelv13-May-08 5:13 
GeneralRe: MenuStrip -> Open new child form Pin
benjamin yap13-May-08 5:24
benjamin yap13-May-08 5:24 
GeneralRe: MenuStrip -> Open new child form Pin
darkelv13-May-08 17:33
darkelv13-May-08 17:33 
It's a copy and paste code so the code may not compile. This is just to show you how to do it.

public class FormManager
    {
        // Main Form
        private MainForm mainForm;

        public FormManager(MainForm mainForm)
        {
            this.mainForm = mainForm;
        }

        public virtual System.Windows.Forms.Form GetForm(Type type, object[] args)
        {
            return GetMDIForm(type, args);
        }

        private ChildForm GetChildMDIForm(Type type)
        {
            // Try to get form of type 'type' from MdiChildren in mainForm
            for (int i = 0; i < mainForm.MdiChildren.Length; i++)
            {
                if (mainForm.MdiChildren[i].GetType().Equals(type))
                {
                    return (ChildForm)mainForm.MdiChildren[i];
                }
            }
            return null;
        }
        public virtual ChildForm GetMDIForm(Type type, object[] args)
        {
            ChildForm form = null;
            bool allowMultiple = false;

            // Attribute to decide whether multiple instance of form is allowed.
            object[] attributes = type.GetCustomAttributes(typeof(ChildFormAttribute), false);
            if (attributes.Length > 0)
            {
                allowMultiple = ((ChildFormAttribute)attributes[0]).AllowMulti;
            }

            if (!allowMultiple) // Not allow to create multiple
            {
                //Try to get from MDI Content
                form = GetChildMDIForm(type);
            }

            if (form == null)
            {
                form = CreateChildMDIForm(type, args);
                if (form != null)
                {
                    form.MdiParent = mainForm;
                    form.WindowState = FormWindowState.Maximized;
                    form.Show()
                }
                else
                {
                    throw new Exception(string.Format("Unable to create form of type '{0}'", type.ToString()));
                }
            }
            else
            {
                form.BringToFront();
            }

            return form;
        }
        private ChildForm CreateChildMDIForm(Type type, object[] args)
        {
            // Try to create a new form with args
            ConstructorInfo ci = type.GetConstructor(System.Type.EmptyTypes);
            ChildForm form = (ChildForm)ci.Invoke(args);
            return form;
        }

        public void ShowRole()
        {
            // Singleton class for opening new form or bring existing form to front
            Wine.Global.FormManager.Instance.GetForm(typeof(Wine.UI.Role), null);
        }

    }

    [ChildFormAttribute(false)] //<---- Use Attribute to indicate this form can not be multiple
    public partial class Role : ChildForm
    {
        public Role()
            : base()
        {
            InitializeComponent();
        }

    }

    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    public class ChildFormAttribute : System.Attribute
    {
        private bool allowMulti;
        public bool AllowMulti
        {
            get
            {
                return allowMulti;
            }
        }

        public ChildFormAttribute(bool allowMulti)
        {
            this.allowMulti = allowMulti;
        }
    }

QuestionResizing form nad positioning controls Pin
benjamin yap13-May-08 4:16
benjamin yap13-May-08 4:16 
QuestionXMLSerializer Pin
George_George13-May-08 4:12
George_George13-May-08 4:12 
AnswerRe: XMLSerializer Pin
led mike13-May-08 4:29
led mike13-May-08 4:29 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.