Dodawanie i usuwanie stron właściwości
Program Project Projektant zapewnia scentralizowaną lokalizację do zarządzania właściwościami, ustawieniami i zasobami projektu w programie Visual Studio. Jest ono wyświetlane jako pojedyncze okno w zintegrowanym środowisku projektowym programu Visual Studio (IDE) i zawiera wiele okienek po prawej stronie, do których uzyskuje się dostęp za pośrednictwem kart po lewej stronie. Okienka (często nazywane stronami właściwości) w programie Project Projektant różnią się w zależności od typu i języka projektu. Dostęp do Projektant projektu można uzyskać za pomocą polecenia Właściwości w menu Project.
Podtyp projektu często musi wyświetlać dodatkowe strony właściwości w programie Project Projektant. Podobnie niektóre podtypy projektu mogą wymagać usunięcia wbudowanych stron właściwości. Aby to zrobić, podtyp projektu musi zaimplementować IVsHierarchy interfejs i zastąpić metodę GetProperty . Przesłaniając tę metodę i używając propId
parametru zawierającego jedną z wartości __VSHPROPID2 wyliczenia, można filtrować, dodawać lub usuwać właściwości projektu. Na przykład może być konieczne dodanie strony do stron właściwości zależnych od konfiguracji. W tym celu należy filtrować strony właściwości zależnych od konfiguracji, a następnie dodać nową stronę do istniejącej listy.
Dodawanie i usuwanie stron właściwości w programie Project Projektant
Usuwanie strony właściwości
Zastąpij metodę filtrowania
GetProperty(uint itemId, int propId, out object property)
stron właściwości i uzyskiwaniaclsids
listy.protected override int GetProperty(uint itemId, int propId, out object property) { //Use propId to filter configuration-independent property pages. switch (propId) { . . . . case (int)__VSHPROPID2.VSHPROPID_PropertyPagesCLSIDList: { //Get a semicolon-delimited list of clsids of the configuration-independent property pages ErrorHandler.ThrowOnFailure(base.GetProperty(itemId, propId, out property)); string propertyPagesList = ((string)property).ToUpper(CultureInfo.InvariantCulture); //Remove the property page here . . . . } . . . . } . . . . return base.GetProperty(itemId, propId, out property); }
Usuń stronę Zdarzenia kompilacji z listy uzyskanej
clsids
.string buildEventsPageGuid = "{1E78F8DB-6C07-4D61-A18F-7514010ABD56}"; int index = propertyPagesList.IndexOf(buildEventsPageGuid); if (index != -1) { // GUIDs are separated by ';' so if you remove the last GUID, also remove the last ';' int index2 = index + buildEventsPageGuid.Length + 1; if (index2 >= propertyPagesList.Length) propertyPagesList = propertyPagesList.Substring(0, index).TrimEnd(';'); else propertyPagesList = propertyPagesList.Substring(0, index) + propertyPagesList.Substring(index2); } //New property value property = propertyPagesList;
Dodawanie strony właściwości
Utwórz stronę właściwości, którą chcesz dodać.
class DeployPropertyPage : Form, Microsoft.VisualStudio.OLE.Interop.IPropertyPage { . . . . //Summary: Return a structure describing your property page. public void GetPageInfo(Microsoft.VisualStudio.OLE.Interop.PROPPAGEINFO[] pPageInfo) { PROPPAGEINFO info = new PROPPAGEINFO(); info.cb = (uint)Marshal.SizeOf(typeof(PROPPAGEINFO)); info.dwHelpContext = 0; info.pszDocString = null; info.pszHelpFile = null; info.pszTitle = "Deployment"; //Assign tab name info.SIZE.cx = this.Size.Width; info.SIZE.cy = this.Size.Height; if (pPageInfo != null && pPageInfo.Length > 0) pPageInfo[0] = info; } }
Zarejestruj nową stronę właściwości.
Zastąpij metodę filtrowania
GetProperty(uint itemId, int propId, out object property)
stron właściwości, uzyskajclsids
listę i dodaj nową stronę właściwości.protected override int GetProperty(uint itemId, int propId, out object property) { //Use propId to filter configuration-dependent property pages. switch (propId) { . . . . case (int)__VSHPROPID2.VSHPROPID_CfgPropertyPagesCLSIDList: { //Get a semicolon-delimited list of clsids of the configuration-dependent property pages. ErrorHandler.ThrowOnFailure(base.GetProperty(itemId, propId, out property)); //Add the Deployment property page. property += ';' + typeof(DeployPropertyPage).GUID.ToString("B"); } } . . . . return base.GetProperty(itemId, propId, out property); }