Vb.net 数独解算器编码

Vb.net 数独解算器编码,vb.net,event-handling,Vb.net,Event Handling,我用VB在VisualStudio2010中完成了一个数独手动解算器。我已经为9x9数独游戏所需的81个盒子创建了81个标签。我想知道如何在没有81个标签单击事件的情况下单击任何标签并运行代码。现在我已经通过鼠标按下事件完成了这项工作,它不灵活,需要标签处于enabled.false模式,仅用于获取坐标X和Y 公共类表单1 Dim SUDNUMFILLFLAG作为字符串 将行(9)、列(9)和框(9)标注为字符串 私有子表单1_Load(发送方作为System.Object,e作为System.

我用VB在VisualStudio2010中完成了一个数独手动解算器。我已经为9x9数独游戏所需的81个盒子创建了81个标签。我想知道如何在没有81个标签单击事件的情况下单击任何标签并运行代码。现在我已经通过鼠标按下事件完成了这项工作,它不灵活,需要标签处于enabled.false模式,仅用于获取坐标X和Y

公共类表单1
Dim SUDNUMFILLFLAG作为字符串
将行(9)、列(9)和框(9)标注为字符串
私有子表单1_Load(发送方作为System.Object,e作为System.EventArgs)处理MyBase.Load
第(1)行=“010203040506070809”:第(2)行=“101112131415161718”:第(3)行=“19202122232425627”:第(4)行=“282930313233343536”
第(5)行=“373839404142434445”:第(6)行=“464748495051525354”:第(7)行=“555657585960616263”:第(8)行=“646566676869707172”
第(9)行=“737475767778798081”
列(1)=“011019283746556473”:列(2)=“02112293847566574”:列(3)=“031221303948576675”:列(4)=“041322314049586776”
列(5)=“051423324150596877”:列(6)=“061524334251606978”:列(7)=“071625344352617079”:列(8)=“081726354453627180”
列(9)=“091827364554637281”
方框(1)=“010203101112192021”:方框(2)=“0405061314152223224”:方框(3)=“070809161718252627”:方框(4)=“282930373839464748”
方框(5)=“313233404142495051”:方框(6)=“343536434445525354”:方框(7)=“555657646566737475”:方框(8)=“585960676869767778”
方框(9)=“616263707172798081”
尺寸k、k1、k2为整数
sudnumfilflag=“1”
k=1
对于k1=0到8
对于k2=0到8
Me.Controls(“Label”和k.ToString).Location=新点(k2*46,k1*46)
如果k1<3且k2<3,则Me.控件(“标签”&k.ToString)。BackColor=Color.LightGray
如果k1>5,k2>5,则Me.Controls(“Label”&k.ToString)。BackColor=Color.LightGray
如果k1>5且k2<3,则Me.控件(“Label”&k.ToString)。BackColor=Color.LightGray
如果k1<3且k2>5,则Me.控件(“Label”&k.ToString)。BackColor=Color.LightGray
如果k1>2且k1<6,则
如果k2>2且k2<6,则Me.控件(“Label”&k.ToString)。BackColor=Color.LightGray
如果结束
k=k+1
下一个
下一个
对于k=1到81
Me.Controls(“Label”和k.ToString).Font=新字体(“Courier New”,8,FontStyle.Bold)
Me.Controls(“Label”&k.ToString).ForeColor=Color.blueviole
Me.Controls(“Label”和k.ToString).Text=“1 2 3 4 5 6 7 8 9”
控件(“Label”&k.ToString).Enabled=False
下一个
RadioButton1.Text=“输入拼图”
RadioButton2.Text=“解决难题”
端接头
私有子RadioButton1\u CheckedChanged(发送方作为System.Object,e作为System.EventArgs)处理RadioButton1.CheckedChanged
sudnumfilflag=“1”
端接头
私有子RadioButton2\u CheckedChanged(发送方作为System.Object,e作为System.EventArgs)处理RadioButton2.CheckedChanged
sudnumfilflag=“0”
端接头
私有子表单1u MouseDown(发送者作为对象,e作为System.Windows.Forms.MouseEventArgs)处理Me.MouseDown
尺寸k3、k4、r、c、b为字符串
模糊线索,clue1,cclue,cclue1,bclue,bclue1作为字符串
线索=”:cclue=“”:cclue1=“”
clue1=“”:bclue=“”:bclue1=“”
k3=1:k4=1:r=1:c=1:b=1
k4=输入框(“输入一个介于1和9之间的数字”)
如果IsNumeric(k4)=True且k4.长度<2,则
k3=(1+e.X\46)+(1+e.Y\46)-1)*9
控件(“Label”&k3.ToString).Enabled=True
Me.Controls(“Label”&k3.ToString).Font=新字体(“Courier New”,24,FontStyle.Bold)
如果sudnumfilfalig=“1”,则Me.Controls(“Label”&k3.ToString.ForeColor=Color.Red
如果sudnumfilfalig=“0”,则Me.Controls(“Label”&k3.ToString.ForeColor=Color.Black
控件(“Label”&k3.ToString).Text=k4
如果结束
'Me.Controls(“Label”&k3.ToString).Enabled=False
“--查找行、列和框
对于k=1到9
对于k1=0至16,第2步
如果Val(k3)=Val(行(k).子串(k1,2)),则r=k
如果Val(k3)=Val(col(k).子串(k1,2)),则c=k
如果Val(k3)=Val(框(k).子串(k1,2)),则b=k
下一个
下一个
'---
对于k=0到16,步骤2
如果(Me.Controls(“Label”)和(Val(row(r).Substring(k,2))).ToString.Text).Length>1,则
'---
线索=(Me.Controls(“Label”&(Val(行(r).子字符串(k,2))).ToString.Text)
clue1=(Me.Controls(“Label”&(Val(行(r).子字符串(k,2))).ToString.Text)
对于kk=0到(Me.Controls(“Label”)和(Val(row(r).Substring(k,2))).ToString.Text)。长度-1
如果线索子串(kk,1)=k4,那么clue1=线索子串(0,kk)&“*”&线索子串(kk+1,线索长度-kk-1)
下一个
'---
控件(“Label”和(Val(行(r).子字符串(k,2))).ToString.Text=clue1
如果结束
如果(Me.Controls(“Label”)和(Val(col(c).Substring(k,2))).ToString.Text).Length>1,则
'---
cclue=(Me.Controls(“Label”&(Val(col(c).Substring(k,2))).ToString.Text)
cclue1=(Me.Controls(“Label”)和(Val(col(c).Substring(k,2))).ToString.Text)
对于kk=0到(Me.Controls(“Label”)和(Val(col(c).Substring(k,2)).ToString.Text)。长度-1
如果cclue.Substring(kk,1)=k4,则cclue1=cclue.Substring(0,kk)&“*”和cclue.Substring(kk+1,cclue.Length-kk-1)
下一个
'---
控件(“Label”和(Val(col(c).Substring(k,2))).ToString.Text=cclue1
如果结束
如果(Me.Controls)(“标签