Komutun görünümünü değiştirme
Bir komutun görünümünü değiştirerek kullanıcınıza geri bildirim sağlayabilirsiniz. Örneğin, kullanılamadığında bir komutun farklı görünmesini isteyebilirsiniz. Komutları kullanılabilir veya kullanılamaz hale getirebilirsiniz, gizleyebilir veya gösterebilir ya da menüden işaretleyebilir veya işaretini kaldırabilirsiniz.
Komutun görünümünü değiştirmek için şu eylemlerden birini gerçekleştirin:
Komut tablosu dosyasındaki komut tanımında uygun bayrakları belirtin.
OleMenuCommandService Hizmeti kullanın.
Arabirimi uygulayın IOleCommandTarget ve ham komut nesnelerini değiştirin.
Aşağıdaki adımlarda, Yönetilen Paket Çerçevesi (MPF) kullanarak bir komutun görünümünü bulma ve güncelleştirme adımları gösterilmektedir.
Menü komutunun görünümünü değiştirmek için
adlı
New Text
bir menü öğesi oluşturmak için Menü komutunun metnini değiştirme başlığındaki yönergeleri izleyin.ChangeMenuText.cs dosyasında aşağıdaki using deyimini ekleyin:
using System.Security.Permissions;
ChangeMenuTextPackageGuids.cs dosyasına aşağıdaki satırı ekleyin:
public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000"; // get the GUID from the .vsct file
ChangeMenuText.cs dosyasında, ShowMessageBox yöntemindeki kodu aşağıdakilerle değiştirin:
private void Execute(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); var command = sender as OleMenuCommand; if (command.Text == "New Text") ChangeMyCommand(command.CommandID.ID, false); }
Nesneden OleMenuCommandService güncelleştirmek istediğiniz komutu alın ve ardından komut nesnesinde uygun özellikleri ayarlayın. Örneğin, aşağıdaki yöntem bir VSPackage komut kümesinden belirtilen komutu kullanılabilir veya kullanılamaz hale getirir. Aşağıdaki kod, adlı
New Text
menü öğesini tıklandıktan sonra kullanılamaz duruma getirir.public bool ChangeMyCommand(int cmdID, bool enableCmd) { bool cmdUpdated = false; var mcs = this.package.GetService<IMenuCommandService, OleMenuCommandService>(); var newCmdID = new CommandID(new Guid(ChangeMenuTextPackageGuids.guidChangeMenuTextPackageCmdSet), cmdID); MenuCommand mc = mcs.FindCommand(newCmdID); if (mc != null) { mc.Enabled = enableCmd; cmdUpdated = true; } return cmdUpdated; }
Projeyi derleyin ve hata ayıklamaya başlayın. Visual Studio'nun deneysel örneği görünmelidir.
Araçlar menüsünde ChangeMenuText Komutunu Çağır'a tıklayın. Bu noktada komut adı Invoke ChangeMenuText olduğundan komut işleyicisi ChangeMyCommand() öğesini çağırmaz.
Araçlar menüsünde artık Yeni Metin'i görmeniz gerekir. Yeni Metin'e tıklayın. Komutun artık gri renkte olması gerekir.