PDA

View Full Version : شمارش تعداد combobox روی فرم



Hossein Bazyan
جمعه 25 مرداد 1387, 12:39 عصر
سلام
من روی فرمم به تعدادی زیاد combobox دارم و میخوام یکسری اطلاعات ثابتی را در آنها نمایش بدم . از for each استفاده کردم اما نشد و پیغام خطا میده . کسی راه دیگری به نظرش نمیرسه

ali_md110
جمعه 25 مرداد 1387, 14:34 عصر
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
Dim CNN As OleDbConnection
Dim DAP As OleDbDataAdapter
Dim DS As DataSet
Dim cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB.mdb"
CNN = New OleDbConnection(cnnstr)
cmd = New OleDbCommand
DAP = New OleDbDataAdapter("select * from table1", cnnstr)
DS = New DataSet
DAP.Fill(DS, "table1")
ComboBox1.DataSource = DS.Tables("table1")
ComboBox1.DisplayMember = "Field1"
ComboBox1.ValueMember = "field2"

DAP.Dispose()

End Sub

Hossein Bazyan
جمعه 25 مرداد 1387, 14:41 عصر
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
Dim CNN As OleDbConnection
Dim DAP As OleDbDataAdapter
Dim DS As DataSet
Dim cnnstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB.mdb"
CNN = New OleDbConnection(cnnstr)
cmd = New OleDbCommand
DAP = New OleDbDataAdapter("select * from table1", cnnstr)
DS = New DataSet
DAP.Fill(DS, "table1")
ComboBox1.DataSource = DS.Tables("table1")
ComboBox1.DisplayMember = "Field1"
ComboBox1.ValueMember = "field2"

DAP.Dispose()

End Sub
سلام
دوست عزیز من اینو میدونم شما متوجه منظور من نشدی .
ساده تر بگم :
فرض میکنیم من 20 عدد کمبوباکس دارم که باید همه آنها دارای 20 عضو ثابت باشند مثلا نام بیست نفر در همه وارد بشه .
یه راهش اینه که هنگامی طراحی فرم این مقادیر به همه داده بشه . که این امکان پذیر نیست چون شاید خواستیم اسامی را تغییر دهیم . راه دومش اینه که 20 حلقه for برای 20 کمبو بسازیم و اطلاعات را در همه بنویسیم . که راه منظقیش نیست .
راه سوم استفاده از for each است که برای کمبوباکس پیغام خطا میده

ali_md110
جمعه 25 مرداد 1387, 16:45 عصر
Private Sub Addcombobox()
Dim newcombobox As ComboBox
Dim top As Integer = 5
Dim left As Integer = 5
For i As Integer = 1 To 5

newcombobox = New ComboBox()
With newcombobox
For j As Integer = 0 To 100
.Width = 90
.Height = 100
.Text = "combo" & i.ToString
.Items.Add(j)
' .DataSource = DS.Tables("table1")
'.DisplayMember = "Field1"
'.ValueMember = "field2"
.Top = top
.Left = left
Next
End With

GroupBox1.Controls.Add(newcombobox)
If (GroupBox1.Width - left) < 190 Then
top += 70
left = 5
Else
left += 95
End If

Next i

End Sub
ست کردن مکان و تعداد کومبو ها رو خودتون طبق سلیقه تنظیم کنید

Hossein Bazyan
جمعه 25 مرداد 1387, 16:59 عصر
سلام
جناب ali_md110 مرسی از توجه شما اما باز هم سوال منو نگرفتی . ببین من نمیخوام در حال اجرا کومبو بسازم بلکه کوکب.ها رو ساخته ام و در هر کمبو هم مقادیر یکسان ذخیره میشه . حای کمبوها هم ثابته و تغییر نمیکنه فقط میخوام اگر مثلا یک مقدار به یگ کمبو اضافه کردم به همه کمبوها اضافه بشه .
عکس زیر را در نظر بگیر
میخوام اگر مثلا مقدار m2 را وارد کردم این مقدار به همه combobox ها اضافه و مثلا خاصیت تکست آنها این مقدار جدید شود.

ali_md110
جمعه 25 مرداد 1387, 17:23 عصر
شما از چه طزیقی به کومبوها اضافه میکنید بانک هست یا چیز دیگه
دوست عزیز شما باید یک مجموعه درست کنید از کنترلی بنام combobox و مقدار در اون بریزید اگر کومبوها به بانک وصل باشند با یک روال میتونی اونها رو به روز کنی

Hossein Bazyan
جمعه 25 مرداد 1387, 17:42 عصر
شما از چه طزیقی به کومبوها اضافه میکنید بانک هست یا چیز دیگه
دوست عزیز شما باید یک مجموعه درست کنید از کنترلی بنام combobox و مقدار در اون بریزید اگر کومبوها به بانک وصل باشند با یک روال میتونی اونها رو به روز کنی

سلام
کومبوها به بانک وصل نیستند . من مقادیر را از آرایه میگیرم .
کد زیر را نوشتم اما خطا میده



For Each CBO As Control In Me.TabControl1.Controls
If TypeOf CBO Is ComboBox Then
With CBO.Items
.Clear()
.Add("m" & " 01")
.Add("m" & " 02")
.Add("m" & " 03")
End With
End If
Next


که خطای زیر صادر میشه .


'Item' is not member of 'System.Windows.Forms.Control'.

البته طبیعی هم هست چون Item عضوی از Control فرم نیست
اما نمیدانم به چه شکل میتوانم مقدار دهی نمایم ؟

mostafaaa
جمعه 25 مرداد 1387, 18:29 عصر
یه راهش اینه

For Each ctrl As Control In Me.Controls
If TypeOf ctrl Is ComboBox Then
Dim con As ComboBox
con = ctrl
con.Items.Add("Your Text")
End If
Next

Hossein Bazyan
جمعه 25 مرداد 1387, 18:35 عصر
یه راهش اینه

For Each ctrl As Control In Me.Controls
If TypeOf ctrl Is ComboBox Then
Dim con As ComboBox
con = ctrl
con.Items.Add("Your Text")
End If
Next
سلام
دقیقا منظور من همین بود.
مرسی

reza6384
شنبه 26 مرداد 1387, 11:56 صبح
سلام
کومبوها به بانک وصل نیستند . من مقادیر را از آرایه میگیرم .
کد زیر را نوشتم اما خطا میده



For Each CBO As Control In Me.TabControl1.Controls
If TypeOf CBO Is ComboBox Then
With CBO.Items
.Clear()
.Add("m" & " 01")
.Add("m" & " 02")
.Add("m" & " 03")
End With
End If
Next


که خطای زیر صادر میشه .


'Item' is not member of 'System.Windows.Forms.Control'.

البته طبیعی هم هست چون Item عضوی از Control فرم نیست
اما نمیدانم به چه شکل میتوانم مقدار دهی نمایم ؟



کافیه یه اصلاح کوچیک رو کدتون انجام بدین :



For Each CBO As ComboBox In Me.TabControl1.Controls
'Eliminate if
With CBO.Items
.Clear()
.Add("m" & " 01")
.Add("m" & " 02")
.Add("m" & " 03")
End With
End If
Next

mostafaaa
شنبه 26 مرداد 1387, 12:13 عصر
کافیه یه اصلاح کوچیک رو کدتون انجام بدین :استفاده از این کد همیشه باعث ایجاد خطای Cast object میشه.

Unable to cast object of type 'System.Windows.Forms.TextBox' to type 'System.Windows.Forms.ComboBox'.مگر اینکه توی فرمتون هیچ کنترل دیگه ای بجز کومبو باکس نباشه