C#如何使用计时器使独立面板朝不同方向移动

C#如何使用计时器使独立面板朝不同方向移动,c#,C#,好的,我正在开发一个游戏引擎,当我选中复选框时,我希望能够使不同的面板(游戏引擎的对象)移动 但是,我只是不知道怎么做 private void Timer_Tick(object sender, EventArgs e) { foreach (KeyValuePair<string, Panel> kvp in objects) { if (running) {

好的,我正在开发一个游戏引擎,当我选中复选框时,我希望能够使不同的面板(游戏引擎的对象)移动

但是,我只是不知道怎么做

    private void Timer_Tick(object sender, EventArgs e)
    {
        foreach (KeyValuePair<string, Panel> kvp in objects)
        {
            if (running)
            {
                Point loc = kvp.Value.Location;
                loc.X = loc.X + 1;
                kvp.Value.Location = loc;
            }
        }
    }
private void Timer_Tick(对象发送方,事件参数e)
{
foreach(对象中的KeyValuePair kvp)
{
如果(正在运行)
{
点位置=kvp.Value.Location;
loc.X=loc.X+1;
kvp.Value.Location=loc;
}
}
}
因此,对于这个代码,所有对象都向左移动,但是假设我只想移动一个对象,而其他对象保持静止,我该如何做呢

我有一个文本框,你可以输入来查找对象,但你必须单击一个按钮才能找到它

这只是引擎中令人困惑的一部分,我向自己保证我不会放弃它。

试试这个。
首先给对象合理的名称,用户可以从UI中将其视为面板名称,然后根据这些名称识别它们。 因此,panel1的文本属性应为“panel1”

虽然我还没有试过,但这段代码应该可以用

private void Timer_Tick(object sender, EventArgs e)
{

    foreach (KeyValuePair<string, Panel> kvp in objects)
    {
        if (running && textbox1.Text.Trim() == kvp.Name.Trim()) // you could also do null check if you like
        {
            Point loc = kvp.Value.Location;
            loc.X = loc.X + 1;
            kvp.Value.Location = loc;
        }
    }
}
private void Timer_Tick(对象发送方,事件参数e)
{
foreach(对象中的KeyValuePair kvp)
{
if(running&&textbox1.Text.Trim()==kvp.Name.Trim())//如果愿意,也可以执行空检查
{
点位置=kvp.Value.Location;
loc.X=loc.X+1;
kvp.Value.Location=loc;
}
}
}

我不明白你所说的不同方向是什么意思,如果你想让它们朝不同的随机方向移动,那么你会在1和2之间生成随机数,如果这个数是1,你就做loc.X+1,但是如果它是2 loc.X-1。如果希望用户选择方向,则可以为此创建一个组合框

与保持不变的对象相比,您希望移动这些对象中的哪一个。您的代码当前看起来像是在所有对象之间循环并应用移动。因此,
objects.First()
将使您只移动第一个对象,而不移动其余的对象。有一个文本框,您可以在其中选择一个对象,但我不知道如何告诉计时器移动该对象。我将尝试此方法。提前谢谢你!它的工作原理非常相似,但我将开始玩弄它。非常感谢。