Problem mit Value Property

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Problem mit Value Property

    Hallo Leute,
    Ich möchte in einem Projekt die PSSuite nutzen, um Prozentwerte wie die RAM last anzuzeigen.

    Nun ergibt sich das Problem, dass der maxmale value des COntrols bei 360 liegt, da das Contol einen Kreis darstellt. Wie kann ich also nun die RAM last dort als Prozent ausgeben lassen? normalerweise wäre dann ja der Prozentwert vom System * 3,6 die richtige Rechnung. Aber es funktioniert leider nicht, ich habe verschiedene sachen versucht, den wert um 3,6 zu erhöhen klappt nicht...

    Dazu habe ich folgenden Code:

    VB.NET-Quellcode

    1. Dim ram As Single
    2. Private Sub TimerRAM_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    3. ram = CInt(100 - (PerformanceCounter1.NextValue / Convert.ToInt32(My.Computer.Info.TotalPhysicalMemory / 1048576)) * 100)
    4. End Sub
    5. Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    6. If PsSpinner1.Value < ram Then
    7. PsSpinner1.Value = CSng(PsSpinner1.Value + 1)
    8. ElseIf PsSpinner1.Value > ram Then
    9. PsSpinner1.Value = CSng(PsSpinner1.Value - 1)
    10. End If
    11. PsSpinner1.Text = ram.ToString + "%"
    12. End Sub
    var coffee = new coffee();
    if(coffee.empty)
    {
    coffee.refill();
    } else {
    coffee.drink();
    }
    @VBDev Du hast 2 Event-Handler für Timer1.Tick, fasse sie zusammen und spare die Variable ram.
    Ist dieses Control Dein Control oder nutzt Du es nur?
    Mach Dir eine eigene Property, innerhalb der Du die Property des Controls liest und schreibst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich nutze es nur....

    wie soll ich denn die variable sparen? dann müsste ich den part ja doppelt dort einfügen wo jetzt ram steht...
    var coffee = new coffee();
    if(coffee.empty)
    {
    coffee.refill();
    } else {
    coffee.drink();
    }

    VBDev schrieb:

    wie soll ich denn die variable sparen?
    So:

    VB.NET-Quellcode

    1. Private Sub TimerRAM_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim ram = CInt(100 - (PerformanceCounter1.NextValue / Convert.ToInt32(My.Computer.Info.TotalPhysicalMemory / 1048576)) * 100)
    3. If PsSpinner1.Value < ram Then
    4. PsSpinner1.Value = CSng(PsSpinner1.Value + 1)
    5. ElseIf PsSpinner1.Value > ram Then
    6. PsSpinner1.Value = CSng(PsSpinner1.Value - 1)
    7. End If
    8. PsSpinner1.Text = ram.ToString + "%"
    9. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hm stimmt, aber die Variable ram existiert immernoch...

    Aber nun zu meiner Eigendlichen Frage, wie kriege ich es nun hin, dass der wert 1 * 3,6 genommen wird? Damit es auch 1% der Anzeige zeigt?
    var coffee = new coffee();
    if(coffee.empty)
    {
    coffee.refill();
    } else {
    coffee.drink();
    }

    VBDev schrieb:

    aber die Variable ram existiert immernoch...
    aber nicht in der Klasse, sondern lokal.
    Nimm kein Integer, sondern ein Double, da kannste alles mögliche dranmultiplizieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!