【问题标题】:how to disable and enable add-in button after click单击后如何禁用和启用加载项按钮
【发布时间】:2012-07-31 09:48:38
【问题描述】:

我正在为 Visual Studio 编写一个包含两个按钮的插件。 我希望当用户点击其中一个按钮时,此按钮将被禁用,而另一个按钮将被启用。 我该怎么做?

按钮是命令类型(commands.AddNamedCommand2...)

【问题讨论】:

  • 说真的,您已经为 Visual Studio 编写了一个插件,但您不知道如何这样做?你试过什么了?也许在事件处理程序中设置((Button)sender).Enabled = false;
  • 按钮是命令。AddNamedCommand2 类型...无法添加这些事件。 (它不是windows窗体......它是插件->这些按钮存在于工具选项卡上方,它们不是常规按钮)
  • 但它们必须继承自 Controls 或类似的东西。您是否在关注任何文档或教程?你能在问题上链接它吗?

标签: c# visual-studio-2010 add-in visual-studio-addins


【解决方案1】:
void Btn1_Click(Object sender, EventArgs e)
{
   Btn2.Enabled = false;
}

void Btn2_Click(Object sender, EventArgs e)
{
   Btn1.Enabled = false;
}

【讨论】:

    【解决方案2】:

    你可以试试这个:

    private void button1_Click(object sender, EventArgs e)
        {
            this.button1.Enabled = false;
            this.button2.Enabled = true;
        }
    
        private void button2_Click(object sender, EventArgs e)
        {
            this.button2.Enabled = false;
            this.button1.Enabled = true;
        }  
    

    希望这对你有帮助....

    【讨论】:

    • 按钮是命令。AddNamedCommand2 类型...无法添加这些事件。 (它不是windows窗体......它是插件->这些按钮存在于工具选项卡上方,它们不是常规按钮)
    【解决方案3】:

    您可以将一些状态变量与您的按钮相关联,它可以表示您的按钮是否应该在您的加载项的最近状态下启用。当您的加载项初始化时,您应该根据需要设置状态。在查询中,您可以检查加载项的最近状态并将按钮设置为正确的启用/不支持状态。

    可以通过IDTCommandTarget接口的QueryStatus方法修改状态(如果你的加载项已经加载)。

    默认模板实现:

    public void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText)
    {
        if(neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone)
        {
            if(commandName == "YourAddin.Connect.YourAddinCommandName")
            {
                status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported|vsCommandStatus.vsCommandStatusEnabled;
                return;
            }
        }
    }
    

    您可以通过将状态设置为vsCommandStatus.vsCommandStatusUnsupported来禁用按钮

    【讨论】:

      【解决方案4】:

      此外,如果您想在初始状态下启用或禁用这些按钮。例如,您想在程序中禁用按钮 1。在说明程序后,您想在单击按钮 2 后启用按钮 1,然后您想添加按钮状态页面加载如下;

       private void Form1_Load(object sender, EventArgs e)
              {
                  this.button1.Enabled = false;
                  this.button2.Enabled = true;
              }
       private void button2_Click(object sender, EventArgs e)
          {       
              this.button1.Enabled = true;
          }
      

      【讨论】:

        【解决方案5】:
        // Remove event handler
        this.button_Ping.Click -= new System.EventHandler(this.button_Ping_Click);
        
        Some action...
        
        // Add event handler
        this.button_Ping.Click += new System.EventHandler(this.button_Ping_Click);
        

        【讨论】:

          猜你喜欢
          • 2017-01-03
          • 2019-10-25
          • 1970-01-01
          • 2011-07-23
          • 1970-01-01
          • 1970-01-01
          • 2018-05-25
          • 1970-01-01
          • 2011-01-20
          相关资源
          最近更新 更多