PDA

View Full Version : سوال: رنگی کردن آیتمهای combobox



ندا2611
دوشنبه 19 اسفند 1387, 13:41 عصر
سلام
1-یک comboboxدارم که 12 ایتم داره.میخوام 4 آیتم اول زرد رنگ باشه وچهار آیتم دوم قرمز و4 ایتم سوم ابی و4ایتم آخر بنفش باشه.
از چه کدهایی استفاده کنم؟

2-اگر کاربر بعد از انتخاب آیتم به هر دلیلی از انتخاب منصرف شد
چطور میشه دوباره به حالت اول(یعنی بدون هیچ انتخاب و نوشته ایی)برگشت؟
با سپاس

mostafaaa
دوشنبه 19 اسفند 1387, 18:10 عصر
سلام دوست من
برای اینکار اول باید خاصیت DrawMode کمبو باکست رو به این شکل تغییر بدی :

Me.ComboBox1.DrawMode = DrawMode.OwnerDrawVariable
بعدش در رویداد DrawItem مربوط به کمبوباکست ، تک تک Item های کمبو باکس رو به اون شکلی که خودت دوست داری میتونی بکشی، برای مثال :

Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
e.DrawBackground()
Dim Brsh As Brush
Dim BGColor As Color = Color.White
Dim FontColor As Color = Color.Black
Dim FONT As Font = e.Font
If e.Index < 4 Then
BGColor = Color.Yellow : ElseIf e.Index < 8 Then
BGColor = Color.Red : ElseIf e.Index <= 11 Then
BGColor = Color.BlueViolet
End If
If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
BGColor = Color.Blue
FontColor = Color.White
End If
Brsh = New SolidBrush(BGColor)
e.Graphics.FillRectangle(Brsh, e.Bounds)
Brsh = New SolidBrush(FontColor)
e.Graphics.DrawString(Me.ComboBox1.Items(e.Index), FONT, Brsh, New RectangleF(e.Bounds.X, _
e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
e.DrawFocusRectangle()
End Sub
برای سوال دومت هم میتونی از این استفاده کنی :

Me.ComboBox1.SelectedItem = Nothing
راستی
4 تا زرد + 4 تا قرمز + 4 تا آبی + 4 بنفش = 16 میشه!!:چشمک:
یا علی

ندا2611
دوشنبه 19 اسفند 1387, 23:55 عصر
حالا میخوام این combobox را به database وصل کنم

1-میشه 2 فیلد از table به یک combo وصل بشه مثلا نام و نام خانوادگی
2-در این فرم 3 تا combo دارم وقتی فرم لود میشه به objconnection مربوط به Combo دوم Error میگیره.وقتی combo اولو حذف میکنم combo دوم کار میکنه اما به objconnection بعدی error میده.
به نظر شما مشکل کجاست؟

anooshiran
سه شنبه 20 اسفند 1387, 00:38 صبح
حالا میخوام این combobox را به database وصل کنم

1-میشه 2 فیلد از table به یک combo وصل بشه مثلا نام و نام خانوادگی
2-در این فرم 3 تا combo دارم وقتی فرم لود میشه به objconnection مربوط به Combo دوم Error میگیره.وقتی combo اولو حذف میکنم combo دوم کار میکنه اما به objconnection بعدی error میده.
به نظر شما مشکل کجاست؟


سلام دوست عزيز

منظورت از وصل شدن 2 فيلد به كمبو باكس چيه؟
آيا مي خواهي اين دو فيلد در dropdown همزمان نشان داده شوند؟ اگر اينطور است كه نياز به بك MultiComboBox داري

در مورد سئوال دومت اگر ممكنه كد وصل شدن table به كمبو باكس را بذلر ببينم مشكل كجاست

ندا2611
چهارشنبه 21 اسفند 1387, 00:30 صبح
1-multiComboBox کجا پیدا کنم نه توی Toolbox بود و نه ChooseItem ؟

2-کد مربوط به رنگی کردن آیتمها درست کار نمیکنه

1-2-برنامه به کد
e.Graphics.DrawString(Me.CboLevel.Items(e.Index), FONT, Brsh, New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)) ایراد میگیره .میگه e.index=-1 نامعتبر است.
2-2 -وقتی خاصیت ComboBox1.DrawMode = DrawMode.OwnerDrawVariable را اعمال میکنم دیگه combobox چیزی نشون نمیده فقط آیتمها رنگی میشن و اگر این خاصیت تغییر نکنه دیگه ایتمها رنگی نمیشن.

3-اتصال به database


objCConnection.objDataAdapter.SelectCommand = objCConnection.objCommand
objCConnection.objDataAdapter.SelectCommand.Connec tion = objCConnection.objConnection
objCConnection.objDataAdapter.SelectCommand.Comman dText = "SELECT TermId,Term FROM TermTable"


'Open the database Connection
objCConnection.objConnection.Close()
objCConnection.objConnection.Open()
objCConnection.objDataAdapter.Fill(objCConnection. objDataSet, "TermTable")
objDataView = New DataView(objCConnection.objDataSet.Tables("TermTable"))
objCConnection.objConnection.Close()
CboTerm.DataSource = objDataView
CboTerm.DisplayMember = "Term"
objCConnection.objConnection.Close()
CboTerm.SelectedIndex = -1
objCConnection.objConnection = Nothing

objCConnection.objCommand =

Nothing

objCConnection.objDataAdapter =


Nothing

objCConnection.objDataSet =


Nothing

objDataView =


Nothing

CboTerm اسم combobox

mostafaaa
چهارشنبه 21 اسفند 1387, 11:21 صبح
سلام دوست من
زمانی که کمبو رو به دیتابیس بایند میکنی جریان کار کمی فرق میکنه .(اگه از اول سوالت رو کامل پرسیده بودی ...)
این مثال رو ببین :

ندا2611
دوشنبه 26 اسفند 1387, 17:09 عصر
سلام
بابت برنامه متشکرم.اما باز هم Error میده.من برای اتصال به DataBase از کد فوق استفاده میکنم و حالا که سعی میکنم کد مربوط بهDim str As String رو بسازم Error میده ،میگه جدولم توی DataSet نیست
من یک کد دیگه رو هم امتحان کردم Error نمیده اما داده های جدولو درست نشون نمیده.وقتی لیستو باز میکنم داده ها به صورت s ،y،s،t نمایش داده میشن بعد از اینکه Select میکنم اونارو درست نشون میده
کدی که نوشتم:
Dim str As String = CboLevel.DataSource.ToString(e.Index)

mostafaaa
دوشنبه 26 اسفند 1387, 17:15 عصر
سلام
بابت برنامه متشکرم.اما باز هم Error میده.من برای اتصال به DataBase از کد فوق استفاده میکنم و حالا که سعی میکنم کد مربوط بهDim str AsString رو بسازم Error میده ،میگه جدولم توی DataSet نیست
من یک کد دیگه رو هم امتحان کردم Error نمیده اما داده های جدولو درست نشون نمیده.وقتی لیستو باز میکنم داده ها به صورت s ،y،s،t نمایش داده میشن بعد از اینکه Select میکنم اونارو درست نشون میده
کدی که نوشتم:
DimstrAsString = CboLevel.DataSource.ToString(e.Index)


سلام دوست من
شاید بهتر باشه که پروژت رو اینجا بزاری تا بررسیش کنیم و یا اگه امکانش نیست یه برنامه کوچیک مثل اون که همین مشکل رو داره بزار تا برات مشکلش رو برطرف کنم
یا علی

ندا2611
یک شنبه 02 فروردین 1388, 09:10 صبح
چند بار سعی کردم پروژه رو بذارم اما تو ارسالFaild میشه.اما کد اتصال به دیتابیس رو بالا نوشتم میمونه کد اتصال ComoBox،احتمالا اون اشتباهه.
ضمنا کجا میشه MultiComboBox پیدا کرد؟

anooshiran
یک شنبه 02 فروردین 1388, 20:52 عصر
سلام دوست عزيز

MultiComboBox را بايد بصورت يك كلاس بنويسي . كلاس آماده اي براي اين كار در vb نيست. كار خيلي سختي هم نيست. تلاشتو بكن اگر موفق نشدي برايت خواهم نوشت.

ندا2611
دوشنبه 03 فروردین 1388, 17:29 عصر
آیا عمل اتصال به دیتا بیس درست انجام میشه؟