【问题标题】:CallByName, set BackColorCallByName,设置背景色
【发布时间】:2015-10-02 07:28:15
【问题描述】:

我们希望动态地(取决于 XML 文件)在 Windows 窗体中设置控件的BackColor

我刚刚用CallType.Method 尝试了CallByName-Method。

CallByName(ColorObject, "FromName", CallType.Method, "Red")

当我想执行“FromName”方法时它不起作用,因为我需要它像这样的“Color.FromName”。

CallByName 从“颜色”类中获得了一个对象,但仍然不起作用。 “颜色”类已导入。

有人知道我做错了什么或如何解决这个问题吗?

【问题讨论】:

    标签: .net vb.net winforms callbyname


    【解决方案1】:

    不清楚控件名称和颜色是否在 Xml 中,所以我将两者都介绍。

    你想要的是Controls.FindColor.FromName

    所以结合你可以做这样的事情:

    Dim ctl = Me.Controls.Find("Controlname from Xml", True) 'omit the True if you don't need to search child controls as it will be faster
    Dim myColour = Color.FromName("ColourName From Xml")
    ctl.backColor = myColour
    

    注意颜色名称必须是KnownColor Enum中的标准.Net颜色之一,否则会抛出异常

    【讨论】:

    • 谢谢 :) 但是我们需要动态选择方法。我们使用“CallByName”解决了这个问题,因此我们可以从 XML 文件中提取字符串并调用合适的方法。 “FromName”的问题是,我们需要它前面的“Color”(Color.FromName)。并且使用 CallByName 我们无法将“Color.FromName”导出为字符串。这样 CallByName 找不到任何方法。
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2010-09-17
    • 2018-07-15
    • 2014-09-04
    • 2010-11-10
    • 2013-08-04
    • 2018-05-19
    • 1970-01-01
    相关资源
    最近更新 更多