【问题标题】:Winform Tooltip issueWinform 工具提示问题
【发布时间】:2012-10-19 15:35:42
【问题描述】:

在我的应用程序中,我想添加工具提示。 配置工具提示后,我希望该选项能够区分激活工具提示的标签以显示适当的文本,因此在工具提示功能中我尝试这样做但出现错误:“类型' Accessibility.IAccessible' 是在未引用的程序集中定义的。您必须添加对程序集“Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用

private void toolTip1_Popup(object sender, PopupEventArgs e)
{
    string st = e.AssociatedControl.AccessibilityObject.Parent.Name;
}

【问题讨论】:

  • 为什么不直接选择 e.AssociatedControl.Name 呢?
  • 您是否尝试添加对它告诉您的程序集的引用? (可访问性)
  • 我想问题是他是否需要获取对 AccessibleObject 的引用。
  • e.AssociatedControl.Name 工作正常,谢谢!顺便说一句,如果我想通过 toolTip1_Popup 函数将新字符串添加到我的工具提示中,我该怎么做(我只找到了工具提示标题)

标签: c# winforms


【解决方案1】:

From MSDN

`To get or set the AccessibilityObject property, you must add a reference to the 
 Accessibility assembly installed with the .NET Framework`

所以你只需要使用项目引用添加这个引用。

当然PopupEventArgs 包含为其绘制工具提示的控件,因此您可以简单地使用e.AssociatedControl.Name

【讨论】:

    【解决方案2】:

    您不需要引用 AccessibleObject。您只需要获取 AssociatedControl 的名称,如下所示:

    private void toolTip1_Popup(object sender, PopupEventArgs e)
    {
        string st = e.AssociatedControl.Name;
    }
    

    至于您的子问题,要动态设置工具提示文本,您可以尝试这样的操作:

            private bool recursing;
            private void toolTip1_Popup(object sender, PopupEventArgs e)
            {
                Control c = e.AssociatedControl as Control;
                if (c != null)
                {
                    if (!recursing)
                    {
                        recursing = true;
                        toolTip1.SetToolTip(c, "totototo");
                        recursing = false;
                    }
                }
            }
    

    请注意,我们必须使用一个标志,因为调用 SetToolTip 会导致 PopUp 事件再次被触发

    干杯

    【讨论】:

      猜你喜欢
      • 2023-01-26
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多