Nasıl yapılır: ekleme ve komutları işlemek
Aşağıdaki nesneler oluşturmak işlemek ve temel komutları işlemek izin Visual Studio menüler ve araç çubukları.
Nesne adı |
Description |
---|---|
Durumunu belirlemek ya da tümleşik geliştirme ortamı (IDE) kullanarak eklenen komut yürütmek için yöntemler sağlar AddNamedCommand2 yöntemi. |
|
IDE içindeki tüm komutları temsil eder. |
|
IDE içindeki bir komut temsil eder. |
|
Eklentiler komut olayları sağlar. |
|
Sağlar bir Click için Komut çubuğundaki Denetim tıklatıldığında olay. |
[!NOT]
Komutu artık uygun komut çubuğunda görünüyorsa veya yeni bir komut eklemek veya varolan bir komutu değiştirmek veya komutu yeniden oluşturmak isterseniz, tüm kopyalarını kapatın Visual Studio ve ReCreateCommands.reg için eklenti kaynak kodunu içeren klasörde adındaki dosyayı çift tıklatın.
Bu nesneleri kullanarak şunları yapabilirsiniz:
Bir komut çubuğunu ekleyip Visual Studio IDE (AddCommandBar ve RemoveCommandBar yöntemleri).
Yeni bir araç çubuğu veya menü komutuna adlı ekleyin (AddNamedCommand2 yöntemi).
Bir komut veya adlandırılmış komut (Raise ve Exec yöntemleri).
Komut durumu elde edilir (CommandInfo ve QueryStatus yöntemleri).
[!NOT]
Bağlantı kuramıyor bir CommandBarEvents ile eklenen yeni bir komut için oluşturulmuş olan CommandBar denetimler için olay AddNamedCommand2.
[!NOT]
Gördüğünüz iletişim kutuları ve menü komutları, etkin ayarlarınıza ve ürün sürümüne bağlı olarak Yardım menüsünde açıklanana göre farklılık gösterebilir.Bu yordamlar, genel geliştirme ayarları ile etkin geliştirilmiştir.Ayarlarınızı değiştirmek için Al ve Verayarları üzerinde araçları menü.Daha fazla bilgi için bkz. Visual Studio ayarları.
Örnek
Aşağıdaki örnek kullanır:
Command Nesne.
AddNamedCommand yöntemi.
AddControl yöntemi.
IDTCommandTarget Arabirimi.
IDTCommandTarget.Exec yöntemi.
IDTCommandTarget.QueryStatus yöntemi.
Yordam bir komut olarak görüntülenen eklenti yapmak gösterilmiştir araçları menüde Visual Studio.İlk bölümü için kod ekleme OnConnection yöntemi, oluşturduğunuz içinde.De Exec ve QueryStatus yöntemleri, emin olun satır If cmdName = "MyAddin1.Connect.MyAddin1" Then, eklenti adı yansıtır.
Public Sub OnConnection(ByVal application As Object, _
ByVal connectMode As ext_ConnectMode, ByVal addInInst _
As Object, ByRef custom As Array) Implements _
IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
If connectMode = ext_ConnectMode.ext_cm_UISetup Then
Dim commands As Commands2 = CType(_applicationObject. _
Commands, Commands2)
Dim toolsMenuName As String
Try
Dim resourceManager As System.Resources. _
ResourceManager = New System.Resources. _
ResourceManager("MyAddin1.CommandBar", _
System.Reflection.Assembly.GetExecutingAssembly())
Dim cultureInfo As System.Globalization. _
CultureInfo = New System.Globalization. _
CultureInfo(_applicationObject.LocaleID)
toolsMenuName = resourceManager.GetString _
(String.Concat(cultureInfo. _
TwoLetterISOLanguageName, "Tools"))
Catch e As Exception
toolsMenuName = "Tools"
End Try
Dim commandBars As CommandBars = CType(_applicationObject _
.CommandBars, CommandBars)
Dim menuBarCommandBar As CommandBar = commandBars. _
Item("MenuBar")
Dim toolsControl As CommandBarControl = _
menuBarCommandBar.Controls.Item(toolsMenuName)
Dim toolsPopup As CommandBarPopup = CType(toolsControl, _
CommandBarPopup)
Try
Dim command As Command = commands.AddNamedCommand2 _
(_addInInstance, "MyAddin1", "MyAddin1", _
"Executes the command for MyAddin1", True, 59, _
Nothing, CType(vsCommandStatus. _
vsCommandStatusSupported, Integer) + CType _
(vsCommandStatus.vsCommandStatusEnabled, Integer), _
vsCommandStyle.vsCommandStylePictAndText, _
vsCommandControlType.vsCommandControlTypeButton)
command.AddControl(toolsPopup.CommandBar, 1)
Catch argumentException As System.ArgumentException
MsgBox(argumentException.ToString)
End Try
End If
End Sub
'Code for the QueryStatus method.
Public Sub QueryStatus(ByVal commandName As String, _
ByVal neededText As vsCommandStatusTextWanted, _
ByRef status As vsCommandStatus, ByRef commandText _
As Object) Implements IDTCommandTarget.QueryStatus
If neededText = vsCommandStatusTextWanted. _
vsCommandStatusTextWantedNone Then
If commandName = "MyAddin1.Connect.MyAddin1" Then
status = CType(vsCommandStatus. _
vsCommandStatusEnabled + vsCommandStatus. _
vsCommandStatusSupported, vsCommandStatus)
Else
status = vsCommandStatus.vsCommandStatusUnsupported
End If
End If
End Sub
' Code for the Exec method.
Public Sub Exec(ByVal commandName As String, ByVal executeOption _
As vsCommandExecOption, ByRef varIn As Object, ByRef varOut _
As Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec
handled = False
If executeOption = vsCommandExecOption. _
vsCommandExecOptionDoDefault Then
If commandName = "MyAddin1.Connect.MyAddin1" Then
handled = True
Exit Sub
End If
End If
End Sub
public class Connect : Object, IDTExtensibility2, IDTCommandTarget
{
public Connect()
{
}
public void OnConnection(object application, ext_ConnectMode
connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
if(connectMode == ext_ConnectMode.ext_cm_UISetup)
{
object []contextGUIDS = new object[] { };
Commands2 commands = (Commands2)_applicationObject.Commands;
string toolsMenuName;
try
{
ResourceManager resourceManager = new
ResourceManager("MyAddin4.CommandBar",
Assembly.GetExecutingAssembly());
CultureInfo cultureInfo = new
System.Globalization.CultureInfo
(_applicationObject.LocaleID);
string resourceName =
String.Concat(cultureInfo.TwoLetterISOLanguageName,
"Tools");
toolsMenuName = resourceManager.GetString(resourceName);
}
catch
{
toolsMenuName = "Tools";
}
CommandBar menuBarCommandBar =
((CommandBars)_applicationObject.CommandBars)["MenuBar"];
CommandBarControl toolsControl =
menuBarCommandBar.Controls[toolsMenuName];
CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl;
try
{
Command command = commands.AddNamedCommand2(_addInInstance,
"MyAddin4", "MyAddin4", "Executes the command for
MyAddin4", true, 59, ref contextGUIDS,
(int)vsCommandStatus.vsCommandStatusSupported+
(int)vsCommandStatus.vsCommandStatusEnabled,
(int)vsCommandStyle.vsCommandStylePictAndText,
vsCommandControlType.vsCommandControlTypeButton);
if((command != null) && (toolsPopup != null))
{
command.AddControl(toolsPopup.CommandBar, 1);
}
}
catch(System.ArgumentException)
{
}
}
}
public void QueryStatus(string commandName, vsCommandStatusTextWanted
neededText, ref vsCommandStatus status, ref object commandText)
{
if(neededText ==
vsCommandStatusTextWanted.vsCommandStatusTextWantedNone)
{
if(commandName == "MyAddin4.Connect.MyAddin4")
{
status = (vsCommandStatus)vsCommandStatus.
vsCommandStatusSupported|vsCommandStatus.
vsCommandStatusEnabled;
return;
}
}
}
public void Exec(string commandName, vsCommandExecOption executeOption,
ref object varIn, ref object varOut, ref bool handled)
{
handled = false;
if(executeOption ==
vsCommandExecOption.vsCommandExecOptionDoDefault)
{
if(commandName == "MyAddin4.Connect.MyAddin4")
{
handled = true;
return;
}
}
}
Ayrıca bkz.
Görevler
Nasıl yapılır: bir eklenti oluşturmak
İzlenecek yol: bir sihirbaz oluşturma
Kavramlar
Diğer Kaynaklar
Oluşturma ve ortam Windows denetleme