اگر اشتباه نکنم شما می خواهید برنامه جدول سودوکو بنویسید.
درسته.
Printable View
اگر اشتباه نکنم شما می خواهید برنامه جدول سودوکو بنویسید.
درسته.
بله . تقریبا کامل هست و مونده همین قسمتش .
و اینکه و دارم توی vb.net می نویسم نه توی C# .
شما سوال رو درست بخونید و جواب کامل رو بگید و حاشیه نرید.
دوست من ، سی شارپ و ویبی هیچ فرقی ندارن، جوابتون با دوستان، من همون حاشیمو میرم
نقل قول:
دوست من چرا ناراحت میشید .قصد بدی نداشتم.
مثلا همین پست یکی مونده به آخر رو که توضیح دادم کدشو بزارید .که برفرض تکست باکس 41 رو گفتم.
و حالا که سی شارپ و ویبی فرقی ندارن پس ویبی
سلام دوست عزیز.
شما باید از روش آرایه های دو بعدی استفاده کنید.
هرچند اصلاً حاضر نیستم 81 کادر متن رو فرمم ببینم ولی میگم براتون.
یک لیست از نوع لیست ایجاد میکنید که مشخص کننده سطرها و ستون های کادر متن ها باشه:
حالا کادر متن هارو به صورت لیست در سطر ها میریزیم:کد:List<List<TextBox>> TextColumn = new List<List<TextBox>>();
خوب روی تابع زیر زیاد وقت فکر کردن نداشتم ولی درست کار میکنه شاید الگوریتمش کمی نادرست باشه:کد:TextColumn.Add(new List<TextBox>() { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9 });
TextColumn.Add(new List<TextBox>() { textBox10, textBox11, textBox12, textBox13, textBox14, textBox15, textBox16, textBox17, textBox18 });
TextColumn.Add(new List<TextBox>() { textBox19, textBox20, textBox21, textBox22, textBox23, textBox24, textBox25, textBox26, textBox27 });
TextColumn.Add(new List<TextBox>() { textBox28, textBox29, textBox30, textBox31, textBox32, textBox33, textBox34, textBox35, textBox36 });
TextColumn.Add(new List<TextBox>() { textBox37, textBox38, textBox39, textBox40, textBox41, textBox42, textBox43, textBox44, textBox45 });
TextColumn.Add(new List<TextBox>() { textBox46, textBox47, textBox48, textBox49, textBox50, textBox51, textBox52, textBox53, textBox54 });
TextColumn.Add(new List<TextBox>() { textBox55, textBox56, textBox57, textBox58, textBox59, textBox60, textBox61, textBox62, textBox63 });
TextColumn.Add(new List<TextBox>() { textBox64, textBox65, textBox66, textBox67, textBox68, textBox69, textBox70, textBox71, textBox72 });
TextColumn.Add(new List<TextBox>() { textBox73, textBox74, textBox75, textBox76, textBox77, textBox78, textBox79, textBox80, textBox81 });
استفاده:کد:private void setColor(TextBox textBox, Color backColor)
{
textBox.BackColor = Color.White;
int x = -1, y = -1;
for (int i = 0; i < TextColumn.Count; i++)
{
y = TextColumn[i].IndexOf(textBox);
if (y != -1)
{
x = i;
break;
}
}
if (x != -1 && y != -1)
{
for (int i = 0; i < TextColumn.Count; i++)
{
if ((TextColumn[x][i].Text == textBox.Text && TextColumn[x][i] != textBox) || (TextColumn[i][y].Text == textBox.Text && TextColumn[i][y] != textBox))
{
textBox.BackColor = backColor;
}
}
}
}
موفق باشید.کد:setColor(textBox1, Color.Red);
حالا کادر متن هارو به صورت لیست در سطر ها میریزیم:
کد:
TextColumn.Add(new List<TextBox>() { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7, textBox8, textBox9 });
TextColumn.Add(new List<TextBox>() { textBox10, textBox11, textBox12, textBox13, textBox14, textBox15, textBox16, textBox17, textBox18 });
TextColumn.Add(new List<TextBox>() { textBox19, textBox20, textBox21, textBox22, textBox23, textBox24, textBox25, textBox26, textBox27 });
TextColumn.Add(new List<TextBox>() { textBox28, textBox29, textBox30, textBox31, textBox32, textBox33, textBox34, textBox35, textBox36 });
TextColumn.Add(new List<TextBox>() { textBox37, textBox38, textBox39, textBox40, textBox41, textBox42, textBox43, textBox44, textBox45 });
TextColumn.Add(new List<TextBox>() { textBox46, textBox47, textBox48, textBox49, textBox50, textBox51, textBox52, textBox53, textBox54 });
TextColumn.Add(new List<TextBox>() { textBox55, textBox56, textBox57, textBox58, textBox59, textBox60, textBox61, textBox62, textBox63 });
TextColumn.Add(new List<TextBox>() { textBox64, textBox65, textBox66, textBox67, textBox68, textBox69, textBox70, textBox71, textBox72 });
TextColumn.Add(new List<TextBox>() { textBox73, textBox74, textBox75, textBox76, textBox77, textBox78, textBox79, textBo
من این رو پیشنهاد میکنم، البته به نظرم، دو بعدی نیازی نیست:31:
ولی بدون دو بعدی بکم سخت تر میشه، پس بیخیلش:31:
این روش پیشنهاد میشه :
کد:
List<List<TextBox>> TextColumn = new List<List<TextBox>>();
List<TextBox> unc = new List<TextBox>();
int i = 0;
foreach(Control c in this.Controls)
if (c.GetType() == typeof(TextBox))
{
unc.Add((TextBox)c);
i++;
if (i == 9)
{
i = 0;
TextColumn.Add(unc);
unc = new List<TextBox>();
}
}
منم با حلقه اینکارو کردم:31: ولی برای اینکه خوانا تر بشه از اون حالت در آوردم.نقل قول:
من این رو پیشنهاد میکنم، البته به نظرم، دو بعدی نیازی نیست [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ولی بدون دو بعدی بکم سخت تر میشه، پس بیخیلش [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این روش پیشنهاد میشه :
یعنی اونهمه کد رو که میبینی ویژوال استادیو برام نوشته:31:.
در این که شکی نیست،:10:نقل قول:
میخواستم، دوستمون هم اگه بلد نیست، این روش رو یاد بگیره:31:
---------- Post added at 02:04 PM ---------- Previous post was at 02:03 PM ----------
یادمه، این روش رو از خودت یاد گرفتم، شایدم از مدیر تالار :دی
کد شما c بود ومن تبدیل به ویبی کردمش شد این :
ولی خطای زیر رو میده :کد:Dim TextColumn = New List(Of TextBox)
Private Sub setColor(ByVal TextBox As TextBox, ByVal BackColor As Color)
TextBox.BackColor = Color.White
Dim x As Integer = -1
Dim Y As Integer = -1
Dim i As Integer = 0
While (i < TextColumn.Count)
Y = TextColumn(i).IndexOf(TextBox)
If Y <> -1 Then
x = i
End If
i = i + 1
End While
If x <> -1 And Y <> -1 Then
While (i < TextColumn.Count)
If ((TextColumn(x)(i).Text = TextBox.Text And TextColumn(x)(i) <> TextBox.Text) Or (TextColumn(i)(Y).Text = TextBox.Text And TextColumn(i)(Y) <> TextBox.Text)) Then
TextBox.BackColor = BackColor
End If
End While
End If
End Sub
TextColumn.Add(TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, TextBox9)
TextColumn.Add(TextBox10, TextBox11, TextBox12, TextBox13, TextBox14, TextBox15, TextBox16, TextBox17, TextBox18)
TextColumn.Add(TextBox19, TextBox20, TextBox21, TextBox22, TextBox23, TextBox24, TextBox25, TextBox26, TextBox27)
TextColumn.Add(TextBox28, TextBox29, TextBox30, TextBox31, TextBox32, TextBox33, TextBox34, TextBox35, TextBox36)
TextColumn.Add(TextBox37, TextBox38, TextBox39, TextBox40, TextBox41, TextBox42, TextBox43, TextBox44, TextBox45)
TextColumn.Add(TextBox46, TextBox47, TextBox48, TextBox49, TextBox50, TextBox51, TextBox52, TextBox53, TextBox54)
TextColumn.Add(TextBox55, TextBox56, TextBox57, TextBox58, TextBox59, TextBox60, TextBox61, TextBox62, TextBox63)
TextColumn.Add(TextBox64, TextBox65, TextBox66, TextBox67, TextBox68, TextBox69, TextBox70, TextBox71, TextBox72)
TextColumn.Add(TextBox73, TextBox74, TextBox75, TextBox76, TextBox77, TextBox78, TextBox79, TextBox80, TextBox81)
اگه مشکل حل شد که شد وگر نه خودم یه راه دیگه پیدا کردم و همونو استفاده میکنمکد:Overload resolution failed because no accessible 'Add' accepts this number of arguments.
خوب شما نباید تبدیل میکردی :دی [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اشتباه تبدیل شده :دی [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
---------- Post added at 04:59 PM ---------- Previous post was at 04:56 PM ----------
چرا روشی که گفتمو تبدیل نمیکنی؟!
کد:
TextColumn.Add(New List(Of TextBox)() From { _
textBox1, _
textBox2, _
textBox3, _
textBox4, _
textBox5, _
textBox6, _
textBox7, _
textBox8, _
textBox9 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox10, _
textBox11, _
textBox12, _
textBox13, _
textBox14, _
textBox15, _
textBox16, _
textBox17, _
textBox18 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox19, _
textBox20, _
textBox21, _
textBox22, _
textBox23, _
textBox24, _
textBox25, _
textBox26, _
textBox27 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox28, _
textBox29, _
textBox30, _
textBox31, _
textBox32, _
textBox33, _
textBox34, _
textBox35, _
textBox36 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox37, _
textBox38, _
textBox39, _
textBox40, _
textBox41, _
textBox42, _
textBox43, _
textBox44, _
textBox45 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox46, _
textBox47, _
textBox48, _
textBox49, _
textBox50, _
textBox51, _
textBox52, _
textBox53, _
textBox54 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox55, _
textBox56, _
textBox57, _
textBox58, _
textBox59, _
textBox60, _
textBox61, _
textBox62, _
textBox63 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox64, _
textBox65, _
textBox66, _
textBox67, _
textBox68, _
textBox69, _
textBox70, _
textBox71, _
textBox72 _
})
TextColumn.Add(New List(Of TextBox)() From { _
textBox73, _
textBox74, _
textBox75, _
textBox76, _
textBox77, _
textBox78, _
textBox79, _
textBox80, _
textBox81 _
})
---------- Post added at 05:00 PM ---------- Previous post was at 04:59 PM ----------
این تبدیل شده ی روش دوم :
کد:
Dim TextColumn As New List(Of List(Of TextBox))()
Dim unc As New List(Of TextBox)()
Dim i As Integer = 0
For Each c As Control In Me.Controls
If c.[GetType]() = GetType(TextBox) Then
unc.Add(DirectCast(c, TextBox))
i += 1
If i = 9 Then
i = 0
TextColumn.Add(unc)
unc = New List(Of TextBox)()
End If
End If
Next