Autor Beitrag
Captain_Jack_Sparrow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 32



BeitragVerfasst: Do 23.02.06 22:51 
Hallo!
Ich meine der Wert von cVorzeichen ändert sich. Den Teil, in dem er sich ändert ist hier nicht... Passiert einfach wenn man auf einen Button klickt, ist aber meiner Meinung anch nicht wichtig. Wollte nur ausdrücken, DASS er sich ändert ;)

Das das DrawItem-Event so häufig aufgerufen wurde, war mir bis gerade eben nicht klar, sorry... Aber ob mich das großartig auf andere Wege geleitet hätte.. Ich wage es zu bezweifeln ;)

Also nochmal mein Problem komplett:
Ich habe eine TextBox in die der User eine Zahl eingibt. Dann klickt er au den Button "Hinzufügen" oder auf "Abziehen". Klickt er auf "Hinzufügen" wird
cVorzeichen = '+';, klickt er hingegen auf "Abziehen" wird cVorzeichen = '-';
In einer Listbox werden dann die getätigten Aktionen angezeigt, also cVorzeichen und anschließend die eingegebene Zahl ausgegeben. Zur Verdeutlichung soll der Eintrag, wenn cVorzeichen = '+' ist, der Eintrag schwarz und wenn cVorzeichen = '-' ist, der Eintrag rot gefärbt sein.
Kann doch nicht sein, dass das so umständlich ist. (Oder bin ich einfach nur zu blöd dazu?!?)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 23.02.06 22:56 
Hallo!

Okay, nochmal: DrawItem wird für immer dann aufgerufen, wann ein Item neu gezeichnet wird. Das kann auch fünf Minuten, nachdem dieses Item eingefügt wurde, sein und dann nochmal zehn Minuten später. Oder zehn Sekunden. Auf jeden Fall musst Du davon ausgehen, dass der Wert von cVorzeichen zu diesem Zeitpunkt nicht mehr der Wert ist, den cVorzeichen zum Zeitpunkt des Hinzufügens hatte!

Du musst Dir also für jedes Item den Wert von cVorzeichen separat merken, damit Du ihn zu jedem Zeitpunkt abrufen kannst.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Captain_Jack_Sparrow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 32



BeitragVerfasst: Do 23.02.06 23:02 
Achsooooooooooooooooo...
ja klar.. *klooooooooooooong*
verdammt^^ weil der ruft ja jedesmal den Wert von cVorzeichen neu ab..
ok, is logisch *g*

Aber anstatt 10 cVorzeichen-Variablen (weil 10 Einträge in der Listbox) kann ich doch auch "einfach" das Vorzeichen (=erste Zeichen) des jeweiligen Eintrages ermitteln, oder ist das zu umständlich?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 23.02.06 23:14 
Hallo!

Ja, das sollte auch gehen. Den Inhalt des Items als String rufst Du ja eh schon ab, da schnell mal zu sehen, was das erste Zeichen ist, macht ja nicht viel Arbeit ;-)

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Captain_Jack_Sparrow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 32



BeitragVerfasst: Do 23.02.06 23:52 
hmm
habe jetzt
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
private void listEingaben_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
    {
        // Create a new Brush and initialize to a Black colored brush by default.
        Brush myBrush = Brushes.Black;
  
        // Determine the color of the brush to draw each item based on the index of the item to draw.
          if (int.Parse (listEingaben.Items[e.Index].ToString()) < 0 )
          { 
            myBrush = Brushes.Red;
          }
          else
          { 
            myBrush = Brushes.Black;
          }

        // Draw the current item text based on the current Font and the custom brush settings.
        e.Graphics.DrawString(listEingaben.Items[e.Index].ToString(), e.Font, myBrush,e.Bounds,StringFormat.GenericDefault);  
    }

Aber der Debugger liefter einen fehler zurück, weil die Einträge SO hinzugefügt werden:

Edit: Die einzelnen Einträge werden so hinzugefügt:
ausblenden C#-Quelltext
1:
listEingaben.Items.Insert(0, cVorzeichen + " " + datenSammeln() + " * " + dWert + " €");					

datenSammeln() liefert hierbei einen ushort zurück.
Hast Du/irgendjemand anderes ne Ahnung, wie ich nur das erste Zeichen abfragen kann?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 24.02.06 00:04 
Du kannst doch einfach mittels myString[0] auf das erste Zeichen eines Strings zugreifen (gibt einen Char).

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Captain_Jack_Sparrow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 32



BeitragVerfasst: Fr 24.02.06 00:20 
Titel: Große Freude
Hallo noch ein letztes Mal (zumindest in diesem Topic)

Ich habe es endlich geschafft :) :beer:

ausblenden C#-Quelltext
1:
if ((listEingaben.Items[e.Index].ToString()).Substring(01)== "-")					

Habs einfach so gemacht und schon klappts...
Das war ja mal ne schwere Geburt...
Danke, dass du mir geholfen hast und nicht einfach keinen Bock mehr hattets (auch wenn ichs verstehen könnte).
:) Danke... Endlich hab ich (ok, eigentlich wir) es geschafft ;) Dankeschön :)