winform繼承窗體,無法修改父窗體控件問題處理筆記


問題描述:

一個窗體集成父窗體,發現無法直接修改父窗體的控件,比如修改大小等,父窗體控件已經設置為public,如果做成一個dll被引用無此問題

 

特征:

不禁使父窗體控件,就算新加一個控件也會這樣:鼠標放到控件移動手方塊上會出現一個“繼承的控件”的tooptip,

異常111正常情況222

 

原因:

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

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

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

 

解決辦法:

一、去掉這句話

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

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.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM