Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用反射设置工具提示_C#_.net_Reflection - Fatal编程技术网

C# 使用反射设置工具提示

C# 使用反射设置工具提示,c#,.net,reflection,C#,.net,Reflection,我需要设置位于用户控件内的控件的工具提示。我无法修改用户控件,因为它已编译。更改工具提示的原因是其语言 var wmp_CloseWindowButton = wmp.GetType().GetProperty("CloseWindowButton", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(wmp, null); var wmp_tooltip = wmp.GetType().GetProperty("ToolTip1

我需要设置位于用户控件内的控件的工具提示。我无法修改用户控件,因为它已编译。更改工具提示的原因是其语言

var wmp_CloseWindowButton = wmp.GetType().GetProperty("CloseWindowButton", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(wmp, null);

var wmp_tooltip = wmp.GetType().GetProperty("ToolTip1", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(wmp, null);

var x = wmp_tooltip.GetMethod("SetToolTip");
这就是我不知道该怎么办的地方

x.Invoke ???????
下面的语句总是返回null

var Mypropertyinfo = wmp_tooltip.GetProperty("ToolTip");
事先非常感谢
Félix现在可以正常工作了。我不知道如何标记你的答案。 多谢各位

var wmp_CloseWindowButton = wmp.GetType().GetProperty("CloseWindowButton", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(wmp, null);
var wmp_tooltip = wmp.GetType().GetProperty("ToolTip1", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(wmp, null);
var x = wmp_tooltip.GetType().GetMethod("SetToolTip");
x.Invoke(wmp_tooltip, new object[] {wmp_CloseWindowButton, "new text"});

返回null的示例与代码示例使用的名称不同-“ToolTip”与“ToolTip1”。这是什么样的应用程序?Winforms?WPF?当您运行codem时,
x
null?我的另一个想法是,工具提示是在按钮本身上配置的,还是通过维护按钮引用的ToolTipService对象配置的?Winforms。GetMethod(“SetToolTip”)返回一个值,我只是不知道如何处理它。Tooltip是属性,Tooltip1是控件的名称。Tooltip是在按钮本身上配置的,x不为空。-要在其上调用nethod的对象(在本例中为ToolTip对象)和传递给方法本身的参数的对象[],这些参数是承载工具提示的控件和文本。所以你需要一个对按钮本身的引用-正如@TheMuffinMan所指出的-但是你需要将它们作为数组传递-
x.Invoke(wmp_工具提示,新对象[]{thebuttonInstance,“new text”})
如果这是你使用的解决方案,接受你对问题的回答,这样每个人都知道你的问题不再公开