Variablen und Platzhalter

Xenolith

Mitglied
Hallo,
Es geht sich darum das ich einige Buttons habe die

cmd1
cmd2
cmd3
...
cmd99
cmd100

bennant sind. Jetzt möchte ich die Backcolor der je nach Ergebniss einer Rechnung ändern dh. wenn bei der Rechnung 1 rauskommt möchte ich gerne das der Button cmd1 seine farbe ändert das mach ich ja mit:
Code:
cmd1.BackColor = Color.Red
aber kann ich das auch so machen das ich die 1 durch eine Variable ersetzte? also so:
Code:
cmd[Variable].BackColor = Color.Red
so geht das natürlich nicht aber gibt es da eine anderere Möglichkeit?

Danke für eure Hilfe
Gruß Xenolith
 
Code:
Dim cmd() As Button = {cmdWord, cmdPowerpoint}

cmd(1).BackColor = Color.Red

das hab ich grade mal probiert geht aber auch nicht :/
 
ich weiss jetzt nicht ob du VBA oder VB benutzt...

in VB würdest du die Buttons nicht cmd1 - cmd99 nennen, sondern Alle cmdbla und dann in den Eigenschaften unter dem Wert index den Buttons Nummern zuweisen, in diesem Fall also 0 bis 98...

im Code sprichst du die Buttons dann mit cmdbla(0) bis cmdbla(98) an
 
Zuletzt bearbeitet:
ich weiss jetzt nicht ob du VBA oder VB benutzt...

in VB würdest du die Buttons nicht cmd1 - cmd99 nennen, sondern Alle cmdbla und dann in den Eigenschaften unter dem Wert index den Buttons Nummern zuweisen, in diesem Fall also 0 bis 98...

im Code sprichst du die Buttons dann mit cmdbla(0) bis cmdbla(98) an

Aber das bring mich nicht soviel weiter weil ich den Button ja über eine variable aufrufen will also:

variable = 5
cmdbla(variable)

für den Button 5

Dann stell deine Frage im .NET Unterforum bitte nochmals.

Danke für den Tipp
 
Der springende Punkt ist, dass du die Buttons indizierst, ob du sie im Code per Variable oder Zahl ansprichst ist egal...

Code:
cmdbla(5) = "Test"

ist selbstverständlich dasselbe wie

Code:
variable = 5
cmdbla(variable) = "Test"
 
Das ist die Fehlermeldung:
System.NullReferenceException wurde nicht behandelt.
Message="Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Source="test"
StackTrace:
bei test.Form1.Button3_Click(Object sender, EventArgs e) in C:\Users\XenoLith\AppData\Local\Temporary Projects\test\Form1.vb:Zeile 17.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
bei test.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()

Hier ein Screenshot vom Source und von der Form
http://www.contragaming.de/bild1.jpg

Hier die Source:
Code:
Public Class Form1
    Dim eins As Integer = 1
    Dim cmd() As Button = {Button1, Button2, Button3, Button4}


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

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        cmd(eins).BackColor = Color.Red ' eins" ist eine Variable mit dem wert 1 (Siehe Deklaration)
        'System.NullReferenceException wurde nicht behandelt.
        'Message = "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
        'Source = "test"
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        cmd(1).BackColor = Color.Red
        'System.NullReferenceException wurde nicht behandelt.
        'Message = "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
        'Source = "test"
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Button1.BackColor = Color.Red
    End Sub
End Class
 
Zuletzt bearbeitet:
Zurück