使用不同控件类型的location
本文关键字:类型 location 控件 | 更新日期: 2023-09-27 18:13:31
我想使用以下方法。
private void LocationChange(Object obj, int first, int second)
{
// so then if i say
obj.Location = new Point(first,second);
}
但这对我不起作用,有没有办法解决这个问题?
Thanks for the help
由于Location
是Control
的属性,您应该将该参数设置为该类型:
private void LocationChange(Control control, int first, int second)
{
control.Location = new Point(first,second);
}
你可以将Control
子类的任何类型传递给该方法。
我不确定为什么你会允许任何object
被传递到方法,如果它是为了操作一个具体的控制,但如果你有一些其他的,非控制特定的逻辑在那里,你可以转换参数,像这样:
private void LocationChange(Object obj, int first, int second)
{
// Logic that operates on the object regardless of its type goes here...
// Although I'm not sure what that logic would be. :)
// This check works since .NET 2.0 (I believe?) and lets you avoid
// an InvalidCastException if obj happens NOT to be a subclass of Control...
if(obj is Control)
{
((Control)obj).Location = new Point(first,second);
}
}
对象没有属性Location..这应该能成功。
private void LocationChange(Object obj, int first, int second)
{
// so then if i say
if (obj is Control)
{
(obj as Control).Location = new Point(first,second);
}
}