locked
FAQs: 如何以编程方式设置功能区的控件? RRS feed

  • 问题

  • 为了帮助大家更好地学习 VSTO 技术,微软论坛技术支持团队编辑了一些列的 "VSTO 常见问题及解答" 精华帖。

    本帖的主题是:如何以编程方式设置功能区的控件?

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "VSTO 常见问题及解答",请打开索引页面:
    http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/ed10f3de-40bb-4f16-81f9-25ace1f152ba

     


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年2月28日 9:36

答案

  • 这取决于我们如何建立功能区,通过可视设计器或者功能区XML自定义项。

    1.       如果我们使用可以设计器来创建功能区,我们可以通过Globals.Ribbons来访问功能区和它们的控件。以切换按钮为例,当它被按下时,我们使用下面的代码设置它的状态。

            private void ThisAddIn_Startup(object sender, System.EventArgs e)

            {

                Globals.Ribbons.Ribbon1.toggleButton1.Checked = true;

            }

    2.       如果我们使用XML文件来自定义功能区,我们需要为控件编写相应的回调函数。我们仍然可以以切换按钮为例,我们可以定义切换按钮的getPressed回调函数,如下:

    <toggleButton id="toggleButton1" label="toggleButton1" size="large" getPressed ="get_Pressed" />

    然后我们像下面的来实现get_Pressed。当函数返回真,这个切换按钮将处于被按下的状态。而当函数返回False是,这个切换按钮将处于没有被按下的状态。我们可以随处调用ribbon.Invalidate() 来强制执行回调函数。       

    public bool get_Pressed(Office.IRibbonControl control)

            {

                if (Globals.ThisAddIn.ctp.Visible)

                {

                    return true;

                }

                else

                {

                    return false;

                }

            }

    相关的论坛帖子:http://social.msdn.microsoft.com/forums/en-US/vsto/thread/2f1e4fb1-8de2-4ac0-887d-b48013e7c274/

    更多的有关VSTOFAQ,请看:

    http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/ed10f3de-40bb-4f16-81f9-25ace1f152ba


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年2月28日 9:37
  • 添加VB版本的代码:

    Public Function get_Pressed(ByVal control As Office.IRibbonControl) As Boolean

            If Globals.ThisAddIn.ctp.Visible Then

                Return True

            Else

                Return False

            End If

    End Function


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年2月28日 9:37

全部回复

  • 这取决于我们如何建立功能区,通过可视设计器或者功能区XML自定义项。

    1.       如果我们使用可以设计器来创建功能区,我们可以通过Globals.Ribbons来访问功能区和它们的控件。以切换按钮为例,当它被按下时,我们使用下面的代码设置它的状态。

            private void ThisAddIn_Startup(object sender, System.EventArgs e)

            {

                Globals.Ribbons.Ribbon1.toggleButton1.Checked = true;

            }

    2.       如果我们使用XML文件来自定义功能区,我们需要为控件编写相应的回调函数。我们仍然可以以切换按钮为例,我们可以定义切换按钮的getPressed回调函数,如下:

    <toggleButton id="toggleButton1" label="toggleButton1" size="large" getPressed ="get_Pressed" />

    然后我们像下面的来实现get_Pressed。当函数返回真,这个切换按钮将处于被按下的状态。而当函数返回False是,这个切换按钮将处于没有被按下的状态。我们可以随处调用ribbon.Invalidate() 来强制执行回调函数。       

    public bool get_Pressed(Office.IRibbonControl control)

            {

                if (Globals.ThisAddIn.ctp.Visible)

                {

                    return true;

                }

                else

                {

                    return false;

                }

            }

    相关的论坛帖子:http://social.msdn.microsoft.com/forums/en-US/vsto/thread/2f1e4fb1-8de2-4ac0-887d-b48013e7c274/

    更多的有关VSTOFAQ,请看:

    http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/ed10f3de-40bb-4f16-81f9-25ace1f152ba


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年2月28日 9:37
  • 添加VB版本的代码:

    Public Function get_Pressed(ByVal control As Office.IRibbonControl) As Boolean

            If Globals.ThisAddIn.ctp.Visible Then

                Return True

            Else

                Return False

            End If

    End Function


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年2月28日 9:37