winform繼承窗體,沒法修改父窗體控件,添加控件也沒法修改大小

問題描述:

一個窗體集成父窗體,發現沒法直接修改父窗體的控件,好比修改大小等,父窗體控件已經設置爲public,若是作成一個dll被引用無此問題html

特徵:

不由使父窗體控件,就算新加一個控件也會這樣:鼠標放到控件移動手方塊上會出現一個「繼承的控件」的tooptip,設計模式

異常111正常狀況222ide

 

緣由:

父窗體設置了WindowState屬性爲:System.Windows.Forms.FormWindowState.Maximized函數

在父窗體的designer.cs中有這麼一句話:oop

this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

 

解決辦法:

1、去掉這句話this

2、放在窗體構造函數中,在這句話前面加上判斷,若是VS處於設計模式,就返回spa

public frmBaseChild()
        {
            InitializeComponent();            if (CheckDesingModel.IsDesingMode) return;//若是處於設計模式,返回
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
        }

 

CheckDesingModel類:設計

複製代碼

internal class CheckDesingModel
    {        public static bool IsDesingMode
        {            get
            {                bool ReturnFlag = false;                if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)
                    ReturnFlag = true;                else if (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")
                    ReturnFlag = true;                //if (ReturnFlag)                //    Msg.Warning("設計模式");                //else Msg.Warning("非設計模式!");
                return ReturnFlag;
            }
        }
    }

複製代碼

原文連接:http://www.cnblogs.com/GarsonZhang/p/5078218.htmlcode

直接在基類窗口中將 WindowState狀態改爲normal 恢復。orm

相關文章
相關標籤/搜索