使用不同控件类型的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

由于LocationControl的属性,您应该将该参数设置为该类型:

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);
    }       
}