Создать режим запуска из DataGridView, используя DatagridViewimageCell - PullRequest
0 голосов
/ 19 марта 2020

Я хочу создать симулятор, который показывает, как объект (который является DataGridViewImageCell) может двигаться по порядку (ранее выбранные ячейки), вот как это работает:

image

Когда я нажимаю на кнопку, я хочу, чтобы красный квадрат автоматически перемещался из одной ячейки (синей) в другую.

В коде я получаю позицию красного ячейка, то я не ищу ни одной ячейки null до go, я хочу видеть изображение, движущееся как игры (другими словами, создающее режим запуска), мне нужен таймер для этого? Я действительно не нашел никаких документов, которые могли бы помочь.

{
    // get red image position
    for (int r = 0; r <= myNewGrid.Rows.Count - 1; r++)
    {
        //This for loop loops through each column, and the row number

        for (int c = 0; c <= myNewGrid.Columns.Count - 1; c++)
        {
            if (myNewGrid.Rows[r].Cells[c].Value == red)
            {
                CPOS = c;
                RPOS = r;
            }

        }
    }
    //call function move that will return selected cells
    Move(RPOS, CPOS);
}

private void Move(int rPOS, int cPOS)
{
    while (running == true)
    {
        if ((myNewGrid.Rows[rPOS].Cells[cPOS - 1].Value != null) && (myNewGrid.Rows[rPOS].Cells[cPOS - 1].Value != red))
        {
            cPOS = cPOS - 1;
            movebyone(rPOS, cPOS);
            //System.Threading.Thread.Sleep(4000);
        }
        else if ((myNewGrid.Rows[rPOS - 1].Cells[cPOS].Value != null) && (myNewGrid.Rows[rPOS - 1].Cells[cPOS].Value != red))
        {
            rPOS = rPOS - 1;
            movebyone(rPOS, cPOS);
        }
        else if ((myNewGrid.Rows[rPOS].Cells[cPOS + 1].Value != null) && (myNewGrid.Rows[rPOS].Cells[cPOS + 1].Value != red))
        {
            cPOS = cPOS + 1;
            movebyone(rPOS, cPOS);
        }
        else if ((myNewGrid.Rows[rPOS + 1].Cells[cPOS].Value != null) && (myNewGrid.Rows[rPOS + 1].Cells[cPOS + 1].Value != red))
        {
            rPOS = rPOS + 1;
            movebyone(rPOS, cPOS);
        }
        else
        {
            MessageBox.Show("pls verify your schema..something wrong!!");
            break;
        }
    }
}

private void movebyone(int rPOS, int cPOS)
{
    myNewGrid.Rows[rPOS].Cells[cPOS].Value = red;
}
...