Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Byta färg i combobox?

Postades av 2008-11-27 08:11:24 - Joel Alexandersson, i forum vb.net, Tråden har 18 Kommentarer och lästs av 1243 personer

Hej! Hur gör jag för att byta färg på en rad i min combobox?

så här vill jag att det ska fungera:

Jag har en combobox som visar ett antal värden. Jag väljer ett värde i listan och trycker sen på en knapp. Jag vill att texten i den raden jag har valt ska bli grön och om jag väljer något annat värde och trycker på knappen ska den bli grön och det förra svart igen. Jag lyckas bara få så att alla blir gröna. Har någon en lösning på det här?


Svara

Sv: Byta färg i combobox?

Postades av 2008-11-27 12:06:38 - André Claesson

För att göra såna special-grejer så får du overrida Draw-metoden för ComboBox/Items och göra det själv.
Jag har inget kodexempel för jag har bara gjort det i C#.


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-02 15:24:47 - Jan Bulér

Det här skulle kunna vara något, nyttja DrawItem-eventet för din ComboBox.

För att skapa eventet, gå till Code View för ditt formulär, välj din ComboBox i vänstra rullgardinsmenyn(ComboBoxen) ovanför kodfönstret och välj sedan DrawItem i den högra ComboBoxen

Har inte lagt in någon felhantering i exemplet.
[Edit] Kompletterade med Form1_Load

<code>
'Spara det valda indext
Private mSelectedIndex As Integer = -1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Sätt rätt DraMode för din ComboBox
comboAmnesplockM1.DrawMode = DrawMode.OwnerDrawFixed
End Sub


'Knapp för att aktivera valet i ComboBoxen
Private Sub SelectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectButton.Click
'Spara undan det valda indexet
mSelectedIndex = comboAmnesplockM1.SelectedIndex
End Sub

'Event för att "måla" Comboboxen
Private Sub comboAmnesplockM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboAmnesplockM1.DrawItem

Dim cb As ComboBox = sender

e.DrawBackground()

If e.Index = mSelectedIndex Then
'Om det är det aktiverade valet

'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
e.Graphics.FillRectangle(Brushes.Red, e.Bounds)
'Sätt lämplig textfärg
e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Yellow, e.Bounds, StringFormat.GenericDefault)

Else
'Det här är normalfallet

'Sätt lämplig textfärg
e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
End If


End Sub
</code>


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-03 08:09:14 - Joel Alexandersson

japp! får det att fungera. Men inte riktigt som jag vill. Nu funkar det på så sätt att jag väljer ett värde och trycker på knappen. ser inte någon förändring. Men om jag trycker så jag kan bläddra i combobox-listan så har färgen ändrat sig där på rätt värde men inte i det som är synligt. Hur gör jag så att färgen ändras på värdet som visas?


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-03 08:42:15 - Jan Bulér

Jag har testat lite till, jag kunde inget av detta med att färga enskilda rader i en ComboBox innan du ställde din fråga men nu har jag lärt mig genom lite trial and error.

Ställ dig själv frågan, vad och när vill jag att något ska hända. Sen realiserar du det genom att leta rätt på lämpligt event för din kontroll sen är det bara att labba med lite kod och Googla så hittar man lösningar om än inte alltid de mest optimala.

<code>
'Spara det valda indext
Private mSelectedIndex As Integer = -1

'En Enum som representerar de statuslägen som ComboBoxen kan anta
Private Enum ComboBoxState
Normal
Marked
End Enum

Private Sub comboAmnesplockM1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboAmnesplockM1.SelectedIndexChanged
Dim cb As ComboBox
cb = CType(sender, ComboBox)

'När SelectedIndex har ändrats så kollar du om det valda indexet
'är det samma som det som har aktiverats
If cb.SelectedIndex = mSelectedIndex Then
SetComboBoxState(cb, ComboBoxState.Marked)
Else
SetComboBoxState(cb, ComboBoxState.Normal)
End If
End Sub

'Körs när ComboBoxen "öppnas"
Private Sub comboAmnesplockM1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboAmnesplockM1.DropDown
'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
SetComboBoxState(sender, ComboBoxState.Normal)
End Sub

'Set statusmarkering (bakgrund) för ComboBox
Private Sub SetComboBoxState(ByVal cb As ComboBox, Optional ByVal mode As ComboBoxState = ComboBoxState.Normal)
If mode = ComboBoxState.Marked Then
cb.BackColor = Color.Red
cb.ForeColor = Color.Yellow
Else
cb.BackColor = Color.White
cb.ForeColor = Color.Black
End If
End Sub


'Knapp för att aktivera valet i ComboBoxen
Private Sub SelectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectButton.Click
'Spara undan det valda indexet
mSelectedIndex = comboAmnesplockM1.SelectedIndex
'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
SetComboBoxState(comboAmnesplockM1, ComboBoxState.Marked)
End Sub

'Event för att "måla" Comboboxen
Private Sub comboAmnesplockM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboAmnesplockM1.DrawItem

'Den här suben ser ut som förut
...

</code>


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-03 09:04:13 - Joel Alexandersson

Fungerar perfekt! tack Jan!


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-03 09:15:01 - Jan Bulér

Ett tips är att du skapar en egen User Control, med lämpliga egenskaper, innehållande en ComboBox som beter sig som du vill. Då kan du sedan använda dig av den i dina projekt istället för standard CBn.


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-03 11:28:23 - Joel Alexandersson

Jag har stött på en liten sak som jag inte hittar! :) Det är ju så att jag har rätt många comboboxar som ser mer eller mindre precis likadana ut. som i exemplet vi gjorde här så hade vi ju "comboAmnesplockM1" men det finns även "comboAmnesplockM2", "comboAmnesplockH1" och "comboAmnesplockH2"

Problemet är ju nu att när jag väljer ett värde i "comboAmnesplockM1" så färgas alla comboboxar. Jag undrar lite vad jag måste göra för att få alla unika? Finns det något i den koden du gav mig som jag kan göra annorlunda?


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-03 12:40:07 - Jan Bulér

Är det när du aktiverar valet via din knapp som de andra CB färgas?
Är det bara bakgrunden som färgas i de andra CB eller blir en rad markerad i dem?

Sätt break points i din kod och stega igenom och se vad som händer och när de andra CBna färgas.

Visa din kod så är det enklare at se vad som är fel, jag har inget problem med flera CB i et Form


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-03 13:17:37 - Joel Alexandersson

ja precis. när jag aktiverar till exempel det tredje valet i någon combobox så blir alla comboboxars tredje val färgat.

Jag har två av varje av en anledning, om du undrar. det är lite svårt att förklara varför. Här kommer rejält med kod. Säkert mycket som kan vara fel sätt att göra saker på.

 'AKTIVERA MOTOR

    'ÄMNESPLOCK
    Private Sub AktiveraAmnesplock1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraAmnesplock1.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboAmnesplockM1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboAmnesplockM1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboAmnesplockM1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub AktiveraAmnesplock2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraAmnesplock2.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboAmnesplockM2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboAmnesplockM2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboAmnesplockM2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'KAP
    Private Sub AktiveraKap1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraKap1.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKapM1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKapM1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKapM1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub AktiveraKap2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraKap2.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKapM2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKapM2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKapM2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'DACKMASKIN
    Private Sub AktiveraDackmaskin1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraDackmaskin1.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboDackmaskinM1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboDackmaskinM1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboDackmaskinM1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub Aktiveradackmaskin2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Aktiveradackmaskin2.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboDackmaskinM2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboDackmaskinM2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboDackmaskinM2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'KLOSS/DACKMASKIN
    Private Sub AktiveraKlossDack1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraKlossDack1.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKlossDackM1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKlossDackM1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKlossDackM1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub AktiveraKlossDack2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraKlossDack2.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKlossDackM2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKlossDackM2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKlossDackM2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'MEDMASKIN
    Private Sub AktiveraMedmaskin1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraMedmaskin1.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboMedmaskinM1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboMedmaskinM1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboMedmaskinM1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub AktiveraMedmaskin2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraMedmaskin2.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboMedmaskinM2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboMedmaskinM2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboMedmaskinM2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'UTTRANSPORT
    Private Sub AktiveraUttransport1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraUttransport1.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboUttransportM1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboUttransportM1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboUttransportM1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub AktiveraUttransport2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraUttransport2.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboUttransportM2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboUttransportM2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboUttransportM2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub


    'AKTIVERA VENTIL

    'ÄMNESPLOCK
    Public Sub KorVentil1Amnesplock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil1Amnesplock.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboAmnesplockH1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboAmnesplockH1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboAmnesplockH1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub KorVentil2Amnesplock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil2Amnesplock.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboAmnesplockH2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboAmnesplockH2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboAmnesplockH2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'KAP
    Private Sub KorVentil1Kap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil1Kap.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKapH1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKapH1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKapH1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub KorVentil2Kap_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil2Kap.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKapH2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKapH2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKapH2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'DACKMASKIN
    Private Sub KorVentil1Dackmaskin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil1Dackmaskin.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboDackmaskinH1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboDackmaskinH1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboDackmaskinH1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub KorVentil2Dackmaskin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil2Dackmaskin.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboDackmaskinH2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboDackmaskinH2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboDackmaskinH2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'KLOSS/DACKMASKIN
    Private Sub KorVentil1KlossDack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil1KlossDack.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKlossDackH1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKlossDackH1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKlossDackH1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub KorVentil2KlossDack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil2KlossDack.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboKlossDackH2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboKlossDackH2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboKlossDackH2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'MEDMASKIN
    Private Sub KorVentil1Medmaskin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil1Medmaskin.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboMedmaskinH1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboMedmaskinH1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboMedmaskinH1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub KorVentil2Medmaskin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil2Medmaskin.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboMedmaskinH2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboMedmaskinH2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboMedmaskinH2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub
    'UTTRANSPORT
    Private Sub KorVentil1Uttransport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil1Uttransport.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboUttransportH1.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboUttransportH1, ComboBoxState.Marked)
        Dim m As Motor
        m = comboUttransportH1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
    End Sub
    Private Sub KorVentil2Uttransport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KorVentil2Uttransport.Click
        'Spara undan det valda indexet
        mSelectedIndex = comboUttransportH2.SelectedIndex
        'Eftersom du aktiverar det aktuella "SelectedIndex" så kan du ju göra markeringen i CB
        SetComboBoxState(comboUttransportH2, ComboBoxState.Marked)
        Dim m As Motor
        m = comboUttransportH2.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand2, m.motornummer)
    End Sub


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Sätt rätt DrawMode för din ComboBox
        'motorer 1
        comboAmnesplockM1.DrawMode = DrawMode.OwnerDrawFixed
        comboKapM1.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinM1.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackM1.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinM1.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportM1.DrawMode = DrawMode.OwnerDrawFixed
        'motorer 2
        comboAmnesplockM2.DrawMode = DrawMode.OwnerDrawFixed
        comboKapM2.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinM2.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackM2.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinM2.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportM2.DrawMode = DrawMode.OwnerDrawFixed
        'ventiler 1
        comboAmnesplockH1.DrawMode = DrawMode.OwnerDrawFixed
        comboKapH1.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinH1.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackH1.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinH1.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportH1.DrawMode = DrawMode.OwnerDrawFixed
        'ventiler 2
        comboAmnesplockH2.DrawMode = DrawMode.OwnerDrawFixed
        comboKapH2.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinH2.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackH2.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinH2.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportH2.DrawMode = DrawMode.OwnerDrawFixed
    End Sub

'MOTORER FÄRG 1
    Private Sub comboAmnesplockM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboAmnesplockM1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKapM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKapM1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboDackmaskinM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboDackmaskinM1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKlossDackM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKlossDackM1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboMedmaskinM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboMedmaskinM1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboUttransportM1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboUttransportM1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    'MOTORER FÄRG 2
    Private Sub comboAmnesplockM2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboAmnesplockM2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKapM2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKapM2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboDackmaskinM2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboDackmaskinM2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKlossDackM2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKlossDackM2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboMedmaskinM2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboMedmaskinM2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboUttransportM2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboUttransportM2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    'SELECTED INDEX CHANGED 1 - MOTORER
    Private Sub comboAmnesplockM1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboAmnesplockM1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKapM1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKapM1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboDackmaskinM1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboDackmaskinM1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKlossDackM1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKlossDackM1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboMedmaskinM1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboMedmaskinM1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboUttransportM1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboUttransportM1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    'SELECTED INDEX CHANGED 2 - MOTORER
    Private Sub comboAmnesplockM2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboAmnesplockM2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKapM2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKapM2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboDackmaskinM2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboDackmaskinM2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKlossDackM2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKlossDackM2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboMedmaskinM2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboMedmaskinM2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboUttransportM2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboUttransportM2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    'VENTILER FÄRG 1
    Private Sub comboAmnesplockH1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboAmnesplockH1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKapH1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKapH1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboDackmaskinH1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboDackmaskinH1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKlossDackH1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKlossDackH1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboMedmaskinH1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboMedmaskinH1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboUttransportH1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboUttransportH1.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    'VENTILER FÄRG 2
    Private Sub comboAmnesplockH2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboAmnesplockH2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKapH2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKapH2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboDackmaskinH2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboDackmaskinH2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboKlossDackH2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboKlossDackH2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboMedmaskinH2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboMedmaskinH2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    Private Sub comboUttransportH2_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboUttransportH2.DrawItem
        Dim cb As ComboBox = sender
        e.DrawBackground()
        If e.Index = mSelectedIndex Then
            'Om det är det aktiverade valet
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)
        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    'SELECTED INDEX CHANGED 1 - VENTILER
    Private Sub comboAmnesplockH1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboAmnesplockH1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKapH1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKapH1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboDackmaskinH1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboDackmaskinH1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKlossDackH1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKlossDackH1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboMedmaskinH1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboMedmaskinH1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboUttransportH1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboUttransportH1.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    'SELECTED INDEX CHANGED 2 - VENTILER
    Private Sub comboAmnesplockH2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboAmnesplockH2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKapH2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKapH2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboDackmaskinH2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboDackmaskinH2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboKlossDackH2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboKlossDackH2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboMedmaskinH2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboMedmaskinH2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    Private Sub comboUttransportH2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboUttransportH2.SelectedIndexChanged
        Dim cb As ComboBox
        cb = CType(sender, ComboBox)
        'När SelectedIndex har ändrats så kollar du om det valda indexet
        'är det samma som det som har aktiverats
        If cb.SelectedIndex = mSelectedIndex Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    'MOTORER FÄRG 1 - DROP DOWN
    Private Sub comboAmnesplockM1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboAmnesplockM1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKapM1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKapM1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboDackmaskinM1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboDackmaskinM1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKlossDackM1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKlossDackM1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboMedmaskinM1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboMedmaskinM1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboUttransportM1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboUttransportM1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    'MOTORER FÄRG 2 - DROP DOWN
    Private Sub comboAmnesplockM2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboAmnesplockM2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKapM2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKapM2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboDackmaskinM2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboDackmaskinM2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKlossDackM2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKlossDackM2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboMedmaskinM2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboMedmaskinM2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboUttransportM2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboUttransportM2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    'VENTILER FÄRG 1 - DROP DOWN
    Private Sub comboAmnesplockH1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboAmnesplockH1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKapH1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKapH1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboDackmaskinH1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboDackmaskinH1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKlossDackH1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKlossDackH1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboMedmaskinH1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboMedmaskinH1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboUttransportH1_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboUttransportH1.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    'VENTILER FÄRG 2 - DROP DOWN
    Private Sub comboAmnesplockH2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboAmnesplockH2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKapH2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKapH2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboDackmaskinH2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboDackmaskinH2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboKlossDackH2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboKlossDackH2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboMedmaskinH2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboMedmaskinH2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub comboUttransportH2_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles comboUttransportH2.DropDown
        'När du öppnar ComboBoxen vill du troligtvis att den visar normal bakgrundsfärg
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    'COMBOBOX STATE
    Private Sub SetComboBoxState(ByVal cb As ComboBox, Optional ByVal mode As ComboBoxState = ComboBoxState.Normal)
        If mode = ComboBoxState.Marked Then
            cb.BackColor = Color.Gainsboro
            cb.ForeColor = Color.Green
        Else
            cb.BackColor = Color.White
            cb.ForeColor = Color.Black
        End If
    End Sub
    Private Enum ComboBoxState
        Normal
        Marked
    End Enum



Svara

Sv: Byta färg i combobox?

Postades av 2008-12-03 17:04:06 - Jan Bulér

problemet är att du använder mSelectedIndex (samma variabel) för att kolla alla CB

Du måste deklarera en SelectedIndex variabel för varje CB.

Som det är nu så när du t ex väljer nr 3 i en CB så sätter du ju mSelectedIndex=3 sen kollar du ju i alla CMnågon_DrawItem(...) om dess index = mSelectedIndex och då markeras ju den raden i varje CB.


Det var mycket onödig och repeterad kod (samma kod för flera comboboxar, knappar mm). Kör lite refactoring, ta ut den kod som är gemensam på flera ställen och skapa en funktion eller sub med den koden och det som skiljer sig åt på varje ställe där koden finns idag sätter du som parametrar istället.

<code>
'Om du idag gör så här:
Private Sub My1_Event()
MinCombo1.GörNågot
MinCombo1.GörNågotMer
MinCombo1.GörÄnnuMer
End Sub

Private Sub My2_Event()
MinCombo2.GörNågot
MinCombo2.GörNågotMer
MinCombo2.GörÄnnuMer
End Sub

'Så kan du i stället göra så här:

Private Sub My1_Event()
MyComboSub(MinCombo1)
End Sub

Private Sub My2_Event()
MyComboSub(MinCombo2)
End Sub

Private Sub MyComboSub(cb as ComboBox)
cb.GörNågot
cb.GörNågotMer
cb.GörÄnnuMer
End Sub
</code>

[Edit]

Har gjort ett litet exempel där jag använder fyra CB och fyra knappar, en för aktivering av valet i respektive CB.

Jag har konfigurerat det så att alla knappar använder samma Click-event och att alla CB använder samma DrawItem-event, SelecteIndexChanged-event och DropDown-event.

Detta är inte på något sätt den mest optimala bästa lösningen men det är en lösning som är betydligt "renare" än din kod.

Tror ditt projekt skulle må bra av att du tänkte lite mer objekt-orienterat och på refactoring.

<code>
Public Class Form2

'En Enum som representerar de statuslägen som ComboBoxen kan anta
Private Enum ComboBoxState
Normal
Marked
End Enum


Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
InitTestData()

InitComboButtons()
InitComboBoxes()
End Sub

Private Sub InitTestData()
Dim i As Integer
Dim s As String

For i = 1 To 9
s = "item " & i.ToString()
ComboBox1.Items.Add(s)
ComboBox2.Items.Add(s)
ComboBox3.Items.Add(s)
ComboBox4.Items.Add(s)
Next

End Sub

Private Sub InitComboButtons()
Combo1Button.Tag = ComboBox1
Combo2Button.Tag = ComboBox2
Combo3Button.Tag = ComboBox3
Combo4Button.Tag = ComboBox4
End Sub

Private Sub InitComboBoxes()
ComboBox1.DrawMode = DrawMode.OwnerDrawFixed
ComboBox2.DrawMode = DrawMode.OwnerDrawFixed
ComboBox3.DrawMode = DrawMode.OwnerDrawFixed
ComboBox4.DrawMode = DrawMode.OwnerDrawFixed
End Sub



Private Sub AnyComboButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Combo4Button.Click, Combo3Button.Click, Combo2Button.Click, Combo1Button.Click
Dim but As Button = sender
Dim cb As ComboBox = but.Tag 'Jag har ju initialt satt knappen TAG objekt till en ComboBox

cb.Tag = cb.SelectedIndex 'Använder ComboBoxens TAG egenskap för att spara akitiverat index.
SetComboBoxState(cb)
End Sub



Private Sub AnyComboBox_DropDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.DropDown, ComboBox3.DropDown, ComboBox2.DropDown, ComboBox1.DropDown
SetComboBoxState(sender, ComboBoxState.Normal)
End Sub

Private Sub AnyComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox4.SelectedIndexChanged, ComboBox3.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox1.SelectedIndexChanged
SetComboBoxState(sender)
End Sub

Private Sub AnyComboBox_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox4.DrawItem, ComboBox3.DrawItem, ComboBox2.DrawItem, ComboBox1.DrawItem
Dim cb As ComboBox = sender

If e.Index.Equals(cb.Tag) Then
'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
e.Graphics.FillRectangle(Brushes.Red, e.Bounds)
'Sätt lämplig textfärg
e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Yellow, e.Bounds, StringFormat.GenericDefault)

Else
'Det här är normalfallet

'Sätt lämplig textfärg
e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
End If
End Sub



'Set statusmarkering (bakgrund) för ComboBox
Private Sub SetComboBoxState(ByVal cb As ComboBox)
If cb.SelectedIndex.Equals(cb.Tag) Then
SetComboBoxState(cb, ComboBoxState.Marked)
Else
SetComboBoxState(cb, ComboBoxState.Normal)
End If
End Sub

'Set statusmarkering (bakgrund) för ComboBox
Private Sub SetComboBoxState(ByVal cb As ComboBox, ByVal mode As ComboBoxState)
If mode = ComboBoxState.Marked Then
cb.BackColor = Color.Red
cb.ForeColor = Color.Yellow
Else
cb.BackColor = Color.White
cb.ForeColor = Color.Black
End If
End Sub

End Class
</code>


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-04 10:12:18 - Joel Alexandersson

Jag förstår hur du menar. Som sagt innan är jag rätt ny när det gäller .net och det här tänket du visar.
Jag har gjort så som du visade och det fungerar. Men inte riktigt som jag vill. har försökt en hel del.
Som du ser har jag comboboxar som slutar med "M1", "M2", "H1" och "H2". På varje maskindel "Ämnesplock", "kap", "medmaskin" osv osv finns det två avdelningar "hand1" och "hand2" "hand 1" på Ämnesplocken till exempel innehåller combobox "comboAmnesplockM1" och combobox "comboAmnesplockH1"
på "hand2" finns combobox "comboAmnesplockM2" och combobox "comboAmnesplockH2"

handkörningsavdelningarna "hand1" och "hand2" har två knappar var som på Ämnesplocken till exempel: På "hand 1"="knappAmneAktiveraM1" och "knappAmneAktiveraH1"
På "hand 2"="knappAmneAktiveraM2" och "knappAmneAktiveraH2"

på kap-maskindelen likadant:
exempel: På "hand 1"="knappKapAktiveraM1" och "knappKapAktiveraH1"
På "hand 2"="knappKapAktiveraM2" och "knappKapAktiveraH2"

när man väljer något på vilken maskindel som helst med någon M1 knapp (i mitt exempel nedan Ämnesplock på "hand1")så ska ett värde sättas till PLC:n med kod:

        Dim m As Motor
        m = comboKAmneM1.SelectedItem
        Call TcClientSync.WriteVar(HMI_Hand1, m.motornummer)
 


alla med "M1" och "H1" sätter "HMI_Hand1"
alla med "M2" och "H2" sätter "HMI_Hand2"


Väljer jag en "H1" och aktiverar den när en "M1" redan är markerad ska den avmarkeras.
Hoppas du förstår vad jag menar. Är det väldigt komlicerat?

Här har du min kod än så länge:

 'En Enum som representerar de statuslägen som ComboBoxen kan anta 
    Private Enum ComboBoxState
        Normal
        Marked
    End Enum
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        InitComboButtons()
        InitComboBoxes()
    End Sub
    Private Sub InitComboButtons()
        AktiveraAmnesplock1.Tag = comboAmnesplockM1
        AktiveraAmnesplock2.Tag = comboAmnesplockM2
        AktiveraKap1.Tag = comboKapM1
        AktiveraKap2.Tag = comboKapM2
        AktiveraDackmaskin1.Tag = comboDackmaskinM1
        Aktiveradackmaskin2.Tag = comboDackmaskinM2
        AktiveraKlossDack1.Tag = comboKlossDackM1
        AktiveraKlossDack2.Tag = comboKlossDackM2
        AktiveraMedmaskin1.Tag = comboMedmaskinM1
        AktiveraMedmaskin2.Tag = comboMedmaskinM2
        AktiveraUttransport1.Tag = comboUttransportM1
        AktiveraUttransport2.Tag = comboUttransportM2
        AktiveraAmnesplock1.Tag = comboAmnesplockH1
        AktiveraAmnesplock2.Tag = comboAmnesplockH2
        AktiveraKap1.Tag = comboKapH1
        AktiveraKap2.Tag = comboKapH2
        AktiveraDackmaskin1.Tag = comboDackmaskinH1
        Aktiveradackmaskin2.Tag = comboDackmaskinH2
        AktiveraKlossDack1.Tag = comboKlossDackH1
        AktiveraKlossDack2.Tag = comboKlossDackH2
        AktiveraMedmaskin1.Tag = comboMedmaskinH1
        AktiveraMedmaskin2.Tag = comboMedmaskinH2
        AktiveraUttransport1.Tag = comboUttransportH1
        AktiveraUttransport2.Tag = comboUttransportH2
    End Sub
    Private Sub InitComboBoxes()
        comboAmnesplockM1.DrawMode = DrawMode.OwnerDrawFixed
        comboAmnesplockM2.DrawMode = DrawMode.OwnerDrawFixed
        comboKapM1.DrawMode = DrawMode.OwnerDrawFixed
        comboKapM2.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinM1.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinM2.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackM1.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackM2.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinM1.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinM2.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportM1.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportM2.DrawMode = DrawMode.OwnerDrawFixed
        comboAmnesplockH1.DrawMode = DrawMode.OwnerDrawFixed
        comboAmnesplockH2.DrawMode = DrawMode.OwnerDrawFixed
        comboKapH1.DrawMode = DrawMode.OwnerDrawFixed
        comboKapH2.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinH1.DrawMode = DrawMode.OwnerDrawFixed
        comboDackmaskinH2.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackH1.DrawMode = DrawMode.OwnerDrawFixed
        comboKlossDackH2.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinH1.DrawMode = DrawMode.OwnerDrawFixed
        comboMedmaskinH2.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportH1.DrawMode = DrawMode.OwnerDrawFixed
        comboUttransportH2.DrawMode = DrawMode.OwnerDrawFixed
    End Sub
    Private Sub AnyComboButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraAmnesplock1.Click, AktiveraAmnesplock2.Click, AktiveraKap1.Click, AktiveraKap2.Click, AktiveraDackmaskin1.Click, Aktiveradackmaskin2.Click, AktiveraKlossDack1.Click, AktiveraKlossDack2.Click, AktiveraMedmaskin1.Click, AktiveraMedmaskin2.Click, AktiveraUttransport1.Click, AktiveraUttransport2.Click
        Dim but As Button = sender
        Dim cb As ComboBox = but.Tag 'Jag har ju initialt satt knappen TAG objekt till en ComboBox

        cb.Tag = cb.SelectedIndex 'Använder ComboBoxens TAG egenskap för att spara akitiverat index.
        SetComboBoxState(cb)
    End Sub
    Private Sub AnyComboBox_DropDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboAmnesplockM1.DropDown, comboAmnesplockM2.DropDown, comboKapM1.DropDown, comboKapM2.DropDown, comboDackmaskinM1.DropDown, comboDackmaskinM2.DropDown, comboKlossDackM1.DropDown, comboKlossDackM2.DropDown, comboMedmaskinM1.DropDown, comboMedmaskinM2.DropDown, comboUttransportM1.DropDown, comboUttransportM2.DropDown, comboAmnesplockH1.DropDown, comboAmnesplockH2.DropDown, comboKapH1.DropDown, comboKapH2.DropDown, comboDackmaskinH1.DropDown, comboDackmaskinH2.DropDown, comboKlossDackH1.DropDown, comboKlossDackH2.DropDown, comboMedmaskinH1.DropDown, comboMedmaskinH2.DropDown, comboUttransportH1.DropDown, comboUttransportH2.DropDown
        SetComboBoxState(sender, ComboBoxState.Normal)
    End Sub
    Private Sub AnyComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboAmnesplockM1.SelectedIndexChanged, comboAmnesplockM2.SelectedIndexChanged, comboKapM1.SelectedIndexChanged, comboKapM2.SelectedIndexChanged, comboDackmaskinM1.SelectedIndexChanged, comboDackmaskinM2.SelectedIndexChanged, comboKlossDackM1.SelectedIndexChanged, comboKlossDackM2.SelectedIndexChanged, comboMedmaskinM1.SelectedIndexChanged, comboMedmaskinM2.SelectedIndexChanged, comboUttransportM1.SelectedIndexChanged, comboUttransportM2.SelectedIndexChanged, comboAmnesplockH1.SelectedIndexChanged, comboAmnesplockH2.SelectedIndexChanged, comboKapH1.SelectedIndexChanged, comboKapH2.SelectedIndexChanged, comboDackmaskinH1.SelectedIndexChanged, comboDackmaskinH2.SelectedIndexChanged, comboKlossDackH1.SelectedIndexChanged, comboKlossDackH2.SelectedIndexChanged, comboMedmaskinH1.SelectedIndexChanged, comboMedmaskinH2.SelectedIndexChanged, comboUttransportH1.SelectedIndexChanged, comboUttransportH2.SelectedIndexChanged
        SetComboBoxState(sender)
    End Sub
    Private Sub AnyComboBox_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles comboAmnesplockM1.DrawItem, comboAmnesplockM2.DrawItem, comboKapM1.DrawItem, comboKapM2.DrawItem, comboDackmaskinM1.DrawItem, comboDackmaskinM2.DrawItem, comboKlossDackM1.DrawItem, comboKlossDackM2.DrawItem, comboMedmaskinM1.DrawItem, comboMedmaskinM2.DrawItem, comboUttransportM1.DrawItem, comboUttransportM2.DrawItem, comboAmnesplockH1.DrawItem, comboAmnesplockH2.DrawItem, comboKapH1.DrawItem, comboKapH2.DrawItem, comboDackmaskinH1.DrawItem, comboDackmaskinH2.DrawItem, comboKlossDackH1.DrawItem, comboKlossDackH2.DrawItem, comboMedmaskinH1.DrawItem, comboMedmaskinH2.DrawItem, comboUttransportH1.DrawItem, comboUttransportH2.DrawItem
        Dim cb As ComboBox = sender

        If e.Index.Equals(cb.Tag) Then
            'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
            e.Graphics.FillRectangle(Brushes.Gainsboro, e.Bounds)
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Green, e.Bounds, StringFormat.GenericDefault)

        Else
            'Det här är normalfallet
            'Sätt lämplig textfärg
            e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
        End If
    End Sub
    'Set statusmarkering (bakgrund) för ComboBox
    Private Sub SetComboBoxState(ByVal cb As ComboBox)
        If cb.SelectedIndex.Equals(cb.Tag) Then
            SetComboBoxState(cb, ComboBoxState.Marked)
        Else
            SetComboBoxState(cb, ComboBoxState.Normal)
        End If
    End Sub
    'Set statusmarkering (bakgrund) för ComboBox
    Private Sub SetComboBoxState(ByVal cb As ComboBox, ByVal mode As ComboBoxState)
        If mode = ComboBoxState.Marked Then
            cb.BackColor = Color.Gainsboro
            cb.ForeColor = Color.Green
        Else
            cb.BackColor = Color.White
            cb.ForeColor = Color.Black
        End If
    End Sub


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-05 09:38:36 - Jan Bulér

För det första så kan du inte göra så här:


<code>
AktiveraAmnesplock1.Tag = comboAmnesplockM1
AktiveraAmnesplock2.Tag = comboAmnesplockM2
.
.
'och senare
AktiveraAmnesplock1.Tag = comboAmnesplockH1
</code>

först sättter du ju AktiveraAmnesplock1.Tag till comboAmnesplockM1 och sedan till comboAmnesplockH1, det innebär ju att AktiveraAmnesplock1.Tag inte längre känner till comboAmnesplockM1

Jag har gjort ett nytt litet exempel åt dig, i exemplet använder jag den motorklass som vi fixade i en annan tråd. Sätt dig in i detta och hur det funkar, stega igenom koden.

Jag skapat två nya klasser, ComboControl och ComboPair, dessa är till för att hantera Combo/Knapp par.
ComboPar skulle kunna göras om så att det kan hantera ett flertal Comboboxar, t ex ComboBoxOptionGroup

<code>
Public Class ComboControl

'En Enum som representerar de statuslägen som ComboBoxen kan anta
Private Enum ComboBoxState
Normal
Marked
End Enum

Public Event Activated(ByVal sender As System.Object, ByVal e As System.EventArgs)

Private WithEvents mCombo As ComboBox
Private WithEvents mButton As Button
Private mActiveItem As Object


Sub New(ByVal combo As ComboBox, ByVal button As Button)
mCombo = combo
mButton = button
Initiate()
End Sub

Private Sub Initiate()
mCombo.DrawMode = DrawMode.OwnerDrawFixed
End Sub

Public ReadOnly Property ActivatedItem() As Object
Get
ActivatedItem = mActiveItem
End Get
End Property

Public ReadOnly Property Combo() As ComboBox
Get
Combo = mCombo
End Get
End Property

Public Sub Activate()
SetSelection()
RaiseEvent Activated(Me, New System.EventArgs())
End Sub

Private Sub SetSelection()
mActiveItem = mCombo.SelectedItem
SetComboBoxState(mCombo)
End Sub

Public Sub ResetSelection()
mActiveItem = Nothing
'mCombo.SelectedIndex = -1 'Använd den här raden om du vill radera valet i CBn
SetComboBoxState(mCombo)
End Sub

Private Sub AnyButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mButton.Click
Activate()
End Sub


Private Sub AnyComboBox_DropDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mCombo.DropDown
SetComboBoxState(sender, ComboBoxState.Normal)
End Sub

Private Sub AnyComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mCombo.SelectedIndexChanged
SetComboBoxState(sender)
End Sub

Private Sub AnyComboBox_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles mCombo.DrawItem
Dim cb As ComboBox = sender

If IsActiveItem(cb.Items.Item(e.Index)) Then
'Fyll rektangeln (Comboboxen) med lämplig färg, Bakgrund
e.Graphics.FillRectangle(Brushes.Red, e.Bounds)
'Sätt lämplig textfärg
e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Yellow, e.Bounds, StringFormat.GenericDefault)

Else
'Det här är normalfallet

'Sätt lämplig textfärg
e.Graphics.DrawString(cb.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault)
End If
End Sub

Private Function IsActiveItem(ByVal item As Object) As Boolean
If mActiveItem Is Nothing Then
IsActiveItem = False
Else
IsActiveItem = Object.ReferenceEquals(item, mActiveItem)
End If
End Function

'Set statusmarkering (bakgrund) för ComboBox
Private Sub SetComboBoxState(ByVal cb As ComboBox)
If IsActiveItem(cb.SelectedItem) Then
SetComboBoxState(cb, ComboBoxState.Marked)
Else
SetComboBoxState(cb, ComboBoxState.Normal)
End If
End Sub

'Set statusmarkering (bakgrund) för ComboBox
Private Sub SetComboBoxState(ByVal cb As ComboBox, ByVal mode As ComboBoxState)
If mode = ComboBoxState.Marked Then
cb.BackColor = Color.Red
cb.ForeColor = Color.Yellow
Else
cb.BackColor = Color.White
cb.ForeColor = Color.Black
End If
End Sub
End Class

</code>

<code>
Public Class ComboPairControl
Private WithEvents mCombo1 As ComboControl
Private WithEvents mCombo2 As ComboControl


Sub New(ByVal combo1 As ComboControl, ByVal combo2 As ComboControl)
mCombo1 = combo1
mCombo2 = combo2
End Sub

Private Sub mCombo1_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mCombo1.Activated
mCombo2.ResetSelection()
End Sub

Private Sub mCombo2_Activated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mCombo2.Activated
mCombo1.ResetSelection()
End Sub

End Class

</code>





Sen anväder jag det så här
<code>

Public Class Form2


Private mComboPairs As System.Collections.Generic.List(Of ComboPairControl)

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Inititaite()
InitTestData()
End Sub

'Används för att simulera en inläsning från en inifil
'Skapar ett antal instanser av klassen Motor där varje
'instans innehåller information för en specifik motor

Private Sub InitTestData()
Dim s As String

For Each ctrl As System.Windows.Forms.Control In Me.Controls
If TypeOf ctrl Is ComboBox Then
Dim i As Integer
Dim cb As ComboBox

cb = CType(ctrl, ComboBox)

For i = 1 To 9
s = String.Format("Motor {0}{1} ", cb.TabIndex, i)
Dim motor As New Motor(i, s)
cb.Items.Add(motor)
Debug.WriteLine(motor.ToString())
Next
End If
Next


End Sub

Private Sub Inititaite()
Dim cc1 As ComboControl
Dim cc2 As ComboControl

mComboPairs = New System.Collections.Generic.List(Of ComboPairControl)()

cc1 = New ComboControl(comboAmnesplockM1, AktiveraAmnesplockM1)
AktiveraAmnesplockM1.Tag = cc1
cc2 = New ComboControl(comboAmnesplockM2, AktiveraAmnesplockM2)
AktiveraAmnesplockM2.Tag = cc2
mComboPairs.Add(New ComboPairControl(cc1, cc2))

cc1 = New ComboControl(comboDackmaskinM1, AktiveraDackmaskinM1)
AktiveraDackmaskinM1.Tag = cc1
cc2 = New ComboControl(comboDackmaskinM2, AktiveraDackmaskinM2)
AktiveraDackmaskinM2.Tag = cc2
mComboPairs.Add(New ComboPairControl(cc1, cc2))

End Sub


Private Sub AktiveraH1M1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraDackmaskinM1.Click, AktiveraAmnesplockM1.Click
Dim cbc As ComboControl = Nothing
If TryParseToComboControl(CType(sender, Button).Tag, cbc) Then
cbc.Activate()
SetPLCKommando("HMI_Hand1", cbc.ActivatedItem)
End If

End Sub

Private Sub AktiveraH2M2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AktiveraDackmaskinM2.Click, AktiveraAmnesplockM2.Click
Dim cbc As ComboControl = Nothing
If TryParseToComboControl(CType(sender, Button).Tag, cbc) Then
cbc.Activate()
SetPLCKommando("HMI_Hand2", cbc.ActivatedItem)
End If
End Sub


Private Sub SetPLCKommando(ByVal cmd As String, ByVal motor As Motor)
'Skicka kommando
Dim msg As String
Dim rubrik As String

msg = String.Format("{0},{1}", cmd, motor.MotorId)
rubrik = motor.Beskrivning
MessageBox.Show(msg, rubrik, MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub


Private Function TryParseToComboControl(ByVal obj As Object, ByRef cbc As ComboControl) As Boolean
Try
cbc = CType(obj, ComboControl)
TryParseToComboControl = True
Catch ex As Exception
TryParseToComboControl = False
End Try

End Function

End Class
</code>


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-05 10:38:30 - Joel Alexandersson

Tack Jan ännu en gång. Fick det att fungera!


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-05 10:59:17 - Joel Alexandersson

En sak till slog mig nu när det fungerade så fint. Vad är det som gör att när jag drar musen över de olika värdena i comboboxen så blir bokstäverna tjockare?


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-05 14:42:11 - Jan Bulér

Vet inte, jag får inte det fenomenet att uppstå.


Sen bör du kolla att man har valt någon motor i CB innan man kan trycka på aktiveringsknappen. Om du inte gör det så kommer du att få ett fel i Sub SetPLCKommando(...).

Naturligtvis bör du kompletterar Sub med felhantering, typ

<code>
Private Sub SetPLCKommando(ByVal cmd As String, ByVal motor As Motor)
'Skicka kommando
Dim msg As String
Dim rubrik As String

Try
msg = String.Format("{0},{1}", cmd, motor.MotorId)
rubrik = motor.Beskrivning
MessageBox.Show(msg, rubrik, MessageBoxButtons.OK, MessageBoxIcon.Information)

Catch ex As Exception
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
</code>


Svara

Sv:Byta färg i combobox?

Postades av 2008-12-06 12:02:58 - Sven Åke Persson

<b>Hej! Hur gör jag för att byta färg på en rad i min combobox? </b>
Kvalificerat djä... bullshit för denna enkla uppgift.

Tror Ni att antalet programrader ger effektivare program.

Sällan har jag läst så mycket shit för detta enkla prob.

.net är ju bara för mycket.

Sen kan jag upplysa om att det finns en knapp <Enter> för att byta rad. Phuuuuuuuuuuuuu.


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-06 12:38:46 - Jan Bulér

Sven.

Jag har aldrig påstått att detta är det optimala sättet, tvärtom så har jag i mina inägg påpekat motsatsen. Joel ställde en ursprunglig fråga om hur man skulle göra för att ändra färg i en enskild rad i en ComboBox, utav det kom sedan ett antal följdfrågor som vi kikade på och hittade en lösning på.

Jag hade själv aldrig tidigare försökt mig på uppgiften att färga en rad i En ComboBox men med lite trial and error så hittade jag ett sätt att lösa det och Joels följdfrågor, om än inte det optimala sättet men som sagt det påpekade jag i mina inlägg.

Eftersom du skriver "Kvalificerat djä... bullshit för denna enkla uppgift", vore det då inte bättre att du informerade Joel om hur man löser denna <B>enkla</B> uppgift.

Angående "knapp <Enter> för att byta rad" så är det nog så att något som gått fel i renderingen av texten när koden har klistrat in mellan code taggarna.

Tack Sven för din hjälp och ditt kreativa inlägg.

God Jul


Svara

Sv: Byta färg i combobox?

Postades av 2008-12-08 09:56:47 - Joel Alexandersson

Du får gärna förklara hur du tycker man ska göra. Jag är öppen för alla lösningar.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 764
27 959
271 761
557
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies