PDA

View Full Version : سوال: انتخاب يك checkbox از بين چند checkbox



bahar2008
یک شنبه 26 خرداد 1387, 10:42 صبح
سلام دوستان
من كد زير رو براي اينكه كاربر از بين چند چك باكس مجبور بشه فقط يكي رو انتخاب كنه نوشتم ولي چند مشكل اينجا هست :



Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
DataGridView1.CurrentRow.Cells(0).Value = False
For i As Integer = 0 To DataGridView1.RowCount - 1
Dim a As Boolean
If DataGridView1.CurrentRow.Cells(0).Value = True Then
a = True
End If
Next
End Sub


1 - با اين كد كاربر مجبور مي شه فقط يكي از چك باكس ها رو در حالت انتخاب قرار بده ولي به محض اينكه هر كليد ديگري توسط كاربر انتخاب بشه اون يك عدد چك باكسي كه انتخاب كرده از حالت انتخاب در مي آد

2 - من در برنامم عمليات تقسيمي دارم كه بعد از انتخاب اين چك باكس بايد انجام بشه ولي نمي دونم در چه رويدادي و چه طوري بنويسم كه اول كد چك باكس انجام بشه و بعد كد عمليات تقسيم

Dariuosh
یک شنبه 26 خرداد 1387, 12:02 عصر
من كد زير رو براي اينكه كاربر از بين چند چك باكس مجبور بشه فقط يكي رو انتخاب كنه نوشتم

شما برا اين کار از RadioButton استفاده کن که کارش همينه

bahar2008
یک شنبه 26 خرداد 1387, 12:15 عصر
ممنون دوست عزيز
ولي مشكل اينجاست كه من دو تا ديتا گريد كنار هم دارم كه مي خوام هر دو شكل هم باشه و برنامه به اين صورت هست كه از ديتا گريد اولي فقط يكي از چك باكس ها بايد تيك بخوره و از ديتا گريد دومي هرچند تا كه كاربر خواست مي تونه تيك بزنه

bahar2008
یک شنبه 26 خرداد 1387, 23:16 عصر
می خوام کاربر مجبور باشه فقط یکی از چک باکس ها رو از بین چند چک باکس انتخاب کنه
چه کدی باید بنویسم برایاین کار دوستان خوبم؟؟؟؟:اشتباه::ناراحت:

Dariuosh
دوشنبه 27 خرداد 1387, 11:02 صبح
با اينکه به نظرم کارت منطقي نمياد ولي


Private ChName AsString = Nothing
PrivateSub CheckBox_CheckedChanged(ByVal sender AsObject, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, _
CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, _
CheckBox4.CheckedChanged, CheckBox5.CheckedChanged
Dim Check As CheckBox = CType(sender, CheckBox)
Dim CheckList AsNew List(Of System.Windows.Forms.CheckBox)
CheckList.Add(CheckBox1)
CheckList.Add(CheckBox2)
CheckList.Add(CheckBox3)
CheckList.Add(CheckBox4)
CheckList.Add(CheckBox5)
ForEach Ch As CheckBox In CheckList
If ChName = Check.Name ThenExitSub
If Ch.Name = Check.Name Then
Else
If Ch.Checked = TrueThen ChName = Ch.Name
Ch.CheckState = False
EndIf
Next
ChName = Nothing
EndSub

reza6384
دوشنبه 27 خرداد 1387, 11:37 صبح
می خوام کاربر مجبور باشه فقط یکی از چک باکس ها رو از بین چند چک باکس انتخاب کنه
چه کدی باید بنویسم برایاین کار دوستان خوبم؟؟؟؟:اشتباه::ناراحت:

نمی دونم من متوجه مساله نشدم یا اینکه مساله خیلی ساده هست. برای اینکه کاربر مجبور بشه فقط یکی از CheckBox ها رو انتخاب کنه کافیه توی رویداد Cell Click مربوط به دیتاگریدت همه Check Box ها رو cheked = false کنی و بعد اون سلول Current Row رو Checked = True کنی.




if DGV1.CurrentRow.Cells(5).Value

For i As integer = 0 to DGV1.Rows.Count - 1

if i <> DGV1.CurrentRow.Index

DGV.CurrentRow.Cells(5).Value = False

end if

Next

end if

من توی این کد فرض کردم که ستون 5ام ستون Boolean شماست

morteza_261
دوشنبه 27 خرداد 1387, 14:20 عصر
سلام
اگه تعداد چک باکس ها کم هست از این روش استفاده کن
ضمنا جواب سوال دومت هم تو این برنامه هست:

bahar2008
دوشنبه 27 خرداد 1387, 18:06 عصر
ممنونم از کمک و راهنماییتون دوستان عزیز
آقا مرتضی و آقا داریوش این کدی که شما به من دادید خیلی عالی بود ولی مشکل اینجاست که chechbox های من داخل دیتا گرید هست و رویداد CheckBox1_CheckedChanged در برنامم وجود نداره که بتونم درون این رویداد برنامه رو بنویسم .یعنی چک باکس ها رو من در برنامم جدا طراحی نکردم و این چک باکس ها ستونی از دیتا گریدم هست :ناراحت:

آقا رضا کدی که شما به من دادید هم خیلی عالی بود ولی مشکلش مثل مشکل قبلی ام بود که وقتی یکی از چک باکس ها در دیتا گرید اول انتخاب می شد هر کلید دیگه ای (مثلا چک باکس دیگری در دیتاگرید دوم یا کلید تایید در صفحه ) زده می شد چک باکس اول از بین می رفت و برای همین در کد تقسیمی که نوشتم چک باکسی که اون اول انتخاب شده بود رو نمی شناسه :ناراحت:

samispeed
دوشنبه 27 خرداد 1387, 20:56 عصر
شما می توانید از روش زیر استفاده کنید


If e.ColumnIndex = 4 Then
For Each row As DataGridViewRow In datagridview1.Rows
If row.Cells(4).Value = True Then
row.Cells(4).Value = False
End If
Next
datagridView1.CurrentRow.Cells(4).Value = True
End If

4 همان شماره ستون مورد نظر که در آن چک باکس ها قرار دارند می باشد شما می توانید این کد را داخل رویداد DataGridView1_CellClick قرار بدهید

bahar2008
سه شنبه 28 خرداد 1387, 10:11 صبح
واقعا يك دنيا ممنونم از لطفت دوست عزيز :قلب::قلب::قلب:
كدي كه شما داديد يك صفحه از پروژه ام رو جلو برد :قلب::قلب:
واقعا نمي دونم چه جوري ازتون تشكر كنم :قلب::قلب::قلب: