【发布时间】:2020-07-17 19:17:26
【问题描述】:
我正在制作一个游戏,你将 8 个皇后放在棋盘上,这样皇后就不会攻击任何其他皇后。这是为了我的家庭作业。
我在每个单元格中都使用了TableLayoutPanel 8x8 和PictureBox。它们在单击时更改颜色或图片,并向用户显示哪个单元格可用。
但是我想实现撤消,所以如果用户不喜欢他放置女王的位置,他可以退后一步。我搜索了很多,但每个撤消重做解决方案都是关于整数和字符串的,我不知道如何将它用于我的表格面板。
你们知道怎么做吗?在更改颜色之前,我尝试制作另一个复制面板并将原始面板复制到其中,如果我想撤消,则实际显示复制面板,但由于某种原因它不起作用。
如果它已经在某处得到回答,如何撤消 TableLayoutPanel 可以请你指导我到那个指南吗?
private void pictureBox1_Click(object sender, EventArgs e)
{
PictureBox picture = (PictureBox)sender;
//checking if cell is empty
if(picture.BackColor==Color.White)
{
picture.Image = Properties.Resources.kraljica;
int column = tableLayoutPanel1.GetCellPosition(picture).Column;
int row = tableLayoutPanel1.GetCellPosition(picture).Row;
int j = column;
int i = row;
//changing color of down right diagonal according to current position of queen
while (i <= 7 && j <= 7)
{
tableLayoutPanel1.GetControlFromPosition(j, i).BackColor = Color.DarkRed;
i++;
j++;
}
【问题讨论】:
-
您是否需要立即撤消表格?我认为在你的情况下,你需要使用任务模式让你自己撤消,因为你撤消的不仅仅是 ui - 它的撤消游戏动作
标签: c# undo tablelayoutpanel redo