我用C ++创建了一个数独求解器。但是我需要一个GUI。由于我不熟悉VC ++,我无法用它创建GUI,而是用c#创建它。我已经完成了c#的基础知识,但需要一个开端。如果我创建一个Windows窗体应用程序并在窗体中创建一个数据网格视图,我应该如何在网格中实现功能。下面是我的C ++代码。
#include<iostream.h>
#include<conio.h>
int a[9][9],b[9][9];
int inputvalue(int x, int y, int value)
{
for(int i = 0; i < 9; i++)
{
if(value == b[x][i] || value == b[i][y])
return 0;
}
for (i = (x / 3) * 3; i <= ((x / 3) * 3) + 2; i++)
for (int j = (y / 3) * 3; j <= ((y / 3) * 3) + 2; j++)
if(b[i][j] == value)
return 0;
return value;
}
int solve(int x, int y)
{
int temp;
if(b[x][y] == 0)
{
for(int i = 1;i < 10; i++)
{
temp = inputvalue(x, y, i);
if(temp > 0)
{
b[x][y] = temp;
if (x == 8 && y == 8)
return 1;
else if (x == 8)
{
if (solve(0, y + 1))
return 1;
}
else
{
if (solve(x + 1, y))
return 1;
}
}
}
if (i == 10)
{
if (b[x][y] != a[x][y])
b[x][y] = 0;
return 0;
}
}
if (x == 8 && y == 8)
return 1;
else if (x == 8)
{
if (solve(0, y + 1))
return 1;
}
else
{
if (solve(x + 1, y))
return 1;
}
}
void main()
{
clrscr();
for(int i = 0;i < 9;i++)
for(int j = 0;j < 9;j++)
{
gotoxy(i + 1,j + 1);
cin >> a[i][j];
}
for(i = 0;i < 9;i++)
for(j = 0;j < 9;j++)
b[i][j] = a[i][j];
if(solve(0,0))
{
for(i = 0;i < 9;i++)
for(j = 0;j < 9;j++)
{
gotoxy(i + 1,j + 1);
cout << b[i][j];
}
}
else
cout<<"no solution";
getch();
}
答案 0 :(得分:1)
this.button1.Click += new System.EventHandler(this.button1_Click);
并且在button1_Click
方法中,您需要执行逻辑,如您在代码中所示。
您可能想知道如何处理datagridview
上的每个单元格。这很简单:
dataGridView1[CurrentColumn, CurrentRow]
返回DataGridViewCell
您将转换为您的单元格(我猜DataGridViewTextBoxColumn
),如此
(DataGridViewTextBoxColumn)dataGridView1[CurrentColumn, CurrentRow]
或
dataGridView1[CurrentColumn, CurrentRow] as DataGridViewTextBoxColumn
然后使用Text
编辑该单元格:
(dataGridView1[CurrentColumn, CurrentRow] as DataGridViewTextBoxColumn).Text = MyText