Hej! Hur gör jag för att byta färg på en rad i min combobox? 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. Det här skulle kunna vara något, nyttja DrawItem-eventet för din ComboBox. 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? 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. 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. 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" Är det när du aktiverar valet via din knapp som de andra CB färgas? ja precis. när jag aktiverar till exempel det tredje valet i någon combobox så blir alla comboboxars tredje val färgat. problemet är att du använder mSelectedIndex (samma variabel) för att kolla alla CB 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. För det första så kan du inte göra så här: 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? Vet inte, jag får inte det fenomenet att uppstå. <b>Hej! Hur gör jag för att byta färg på en rad i min combobox? </b> Sven. Du får gärna förklara hur du tycker man ska göra. Jag är öppen för alla lösningar.Byta färg i 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?Sv: Byta färg i combobox?
Jag har inget kodexempel för jag har bara gjort det i C#.Sv: Byta färg i 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>Sv:Byta färg i combobox?
Sv: Byta färg i combobox?
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>Sv: Byta färg i combobox?
Sv:Byta färg i combobox?
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?Sv: Byta färg i combobox?
Ä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 FormSv:Byta färg i combobox?
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
Sv: Byta färg i combobox?
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>Sv:Byta färg i combobox?
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
Sv: Byta färg i combobox?
<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>Sv:Byta färg i combobox?
Sv: Byta färg i combobox?
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>Sv:Byta färg i combobox?
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.Sv: Byta färg i combobox?
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 JulSv: Byta färg i combobox?