gpt4 book ai didi

c# - 如何检查控件上是否设置了工具提示

转载 作者:太空宇宙 更新时间:2023-11-03 13:23:21 25 4
gpt4 key购买 nike

假设我在一个(部分)方法中有以下代码:

ToolTip tip = new ToolTip();
Control ctrl = new Control();
tip.SetToolTip(ctrl, String.Empty);

我想在测试中断言在特定情况下 tipctrl 关联。以下调用是不够的:

Assert.AreEqual(String.Empty, tip.GetToolTip(ctrl));

无论上面的方法体是否被执行,这个调用都会成功。我正在寻找类似的东西:

ToolTip t = GetTooltipForControl(ctrl);
Assert.IsNotNull(t);

GetTooltipForControl 应该在没有工具提示与控件关联时返回 null,并且应该返回 ToolTip 实例。这可以做到吗?

提醒:我个人只需要这种逻辑来进行单元测试/回归测试,以便以 TDD 方式修复错误。

最佳答案

无法找到任何方法来检查工具提示是否已设置,如果已设置为空。一种方法是创建自定义控件并使用它而不是标准控件。喜欢:

public class CustomLabel : Label
{
public bool isTooltipSet
{
get;
set;
}

public void SetToolTip()
{
ToolTip tt = new ToolTip();
tt.SetToolTip(this, string.Empty);
isTooltipSet = true;
}
}

然后你可以检查它:

CustomLabel lbl = new CustomLabel();
lbl.SetToolTip();
Assert.AreEqual(true, lbl.isToolTipSet);

为什么需要设置和检查空工具提示?也许有更好的方法来做到这一点。也许你可以设置一些文本,但是将 tooltip 的 Active 属性设置为 false

ToolTip tt = new ToolTip();
tt.Active = false;
Control cc = new Control();
tt.SetToolTip(cc, "text");
Assert.AreEqual("text", tt.GetToolTip(cc));

编辑:又一个想法不是那么 super hacky 并且需要更少的重构。您可以创建用于设置工具提示的扩展方法,您可以在其中将工具提示文本存储到 Control.Tag 属性中。

public static class Extensions
{
public static void SetToolTip(this Control ctrl, ToolTip tt, string text)
{
tt.SetToolTip(ctrl, text);
ctrl.Tag = text;
}
}

然后断言:

Assert.AreEqual(string.Empty, (string)ctrl.Tag);

(string)ctrl.Tag 在未调用扩展方法 SetToolTip 时将为空,而在调用扩展方法时为 sting.Empty string.Empty 参数

关于c# - 如何检查控件上是否设置了工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com