无法在不同名称内更改 UIElement space
UIElement can't be changed inside different name space
编辑:对于 OOP 的新程序员来说,如果语法正在寻找特定的变量类型,则仅调用 class 是不够的,它将引发错误。这就是下面的答案所指出的问题,这行代码:
System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1], Pos.X);
它有一个致命的错误,那就是 Canvas.SetLeft
正在寻找一个 canvas 子节点 class(在本例中是一个矩形)和一个点。但是我发送了 Class 类型 Gate_list[Gate_list.Count - 1]
而它应该是 Gate_list[Gate_list.Count - 1].GetRect()
编辑结束
我有一个在方法中调用 class 的委托。委托正在检测 Rectangle
() 上的鼠标按下事件。在我尝试 SetLeft
上 Rectangle
的方法中,我刚刚添加到 Canvas
但得到错误 CS1503.
我试过将其转换为 System.Windows.UIElement
但系统无法转换。
public partial class Program
{
public void Rect_Button_MouseDown(MainWindow MainWind, string Tag)
{
Point Pos = new Point();
Pos = System.Windows.Input.Mouse.GetPosition(MainWind.Main_Canvas);
if (Drag == false)
{
Drag = true;
Gate_list.Add(new Gate_Class(Convert.ToInt32(Tag),new Rectangle()));
MainWind.Main_Canvas.Children.Add(Gate_list[Gate_list.Count-1].Get_Rect());
System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1], Pos.X);
}
}
}
我相信应该有一个客场可以转会system.windows但我不知道
我的问题归结为找到一种将 Gate_list[]
转换为 UIElement
的方法。
我认为您在代码的最后一行提供了 Gate_list[Gate_list.Count - 1]
但这是您的自定义 class 而不是您刚刚创建的 Rectangle
。我可以从您的代码中推断出您可以使用 Gate_list[Gate_list.Count - 1].Get_Rect()
.
获得 Rectangle
换句话说,在我看来,您需要添加 .Get_Rect() 才能实际获得矩形。
如果这不起作用,请提供您的 Gate_Class
代码和您收到的错误消息。
Gate_Class
显然不是 UIElement
。它应该有一个 Rectangle
属性 那个 returns 你传递给它的构造函数的 Rectangle
。然后你可以设置 Canvas.Left
属性 的 Rectangle
:
System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1].Rectangle, Pos.X);
public class Gate_Class
{
public Gate_Class(int tag, Rectangle rectangle)
{
//...
Rectangle = rectangle;
}
public Rectangle Rectangle { get; }
}
编辑:对于 OOP 的新程序员来说,如果语法正在寻找特定的变量类型,则仅调用 class 是不够的,它将引发错误。这就是下面的答案所指出的问题,这行代码:
System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1], Pos.X);
它有一个致命的错误,那就是 Canvas.SetLeft
正在寻找一个 canvas 子节点 class(在本例中是一个矩形)和一个点。但是我发送了 Class 类型 Gate_list[Gate_list.Count - 1]
而它应该是 Gate_list[Gate_list.Count - 1].GetRect()
编辑结束
我有一个在方法中调用 class 的委托。委托正在检测 Rectangle
(SetLeft
上 Rectangle
的方法中,我刚刚添加到 Canvas
但得到错误 CS1503.
我试过将其转换为 System.Windows.UIElement
但系统无法转换。
public partial class Program
{
public void Rect_Button_MouseDown(MainWindow MainWind, string Tag)
{
Point Pos = new Point();
Pos = System.Windows.Input.Mouse.GetPosition(MainWind.Main_Canvas);
if (Drag == false)
{
Drag = true;
Gate_list.Add(new Gate_Class(Convert.ToInt32(Tag),new Rectangle()));
MainWind.Main_Canvas.Children.Add(Gate_list[Gate_list.Count-1].Get_Rect());
System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1], Pos.X);
}
}
}
我相信应该有一个客场可以转会system.windows但我不知道
我的问题归结为找到一种将 Gate_list[]
转换为 UIElement
的方法。
我认为您在代码的最后一行提供了 Gate_list[Gate_list.Count - 1]
但这是您的自定义 class 而不是您刚刚创建的 Rectangle
。我可以从您的代码中推断出您可以使用 Gate_list[Gate_list.Count - 1].Get_Rect()
.
Rectangle
换句话说,在我看来,您需要添加 .Get_Rect() 才能实际获得矩形。
如果这不起作用,请提供您的 Gate_Class
代码和您收到的错误消息。
Gate_Class
显然不是 UIElement
。它应该有一个 Rectangle
属性 那个 returns 你传递给它的构造函数的 Rectangle
。然后你可以设置 Canvas.Left
属性 的 Rectangle
:
System.Windows.Controls.Canvas.SetLeft(Gate_list[Gate_list.Count - 1].Rectangle, Pos.X);
public class Gate_Class
{
public Gate_Class(int tag, Rectangle rectangle)
{
//...
Rectangle = rectangle;
}
public Rectangle Rectangle { get; }
}