Kleines Problem

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

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Eigentlich Ja.
    Man rechnet nicht mit Controls.Value.


    Aber das ist in diesem Fall erst mal egal.Vorraus gesetzt deine Progressbar.max = 100

    Also wenn dein Akkustand 100% erreicht hat musst du einen Boolean true machen und deine Settings + 1
    Wenn er weniger als 100% hat eben wieder auf False.
    Sonst zählt er dir bei jedem Tick eins hoch.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Hobbl“ ()

    cool geht, aber jetzt habe ich das Problem das er im sekunden takt hochgeht bei 100%... soll er doch nur einmal... ich bastel mal bisschen rum.

    Ach, timer sind doch mist, kann ich nicht ein event von der Progressbar nutzen wenn die 100% geht das der einmal hochzählt....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TheVBNoob“ ()

    Darum Post 21

    Ich glaub ganz ohne Timer geht das nicht.
    Aber halt nur einen.

    Und dann sind das doch nur ein paar If Abfragen.

    Beispiel.
    Dim power As PowerStatus = SystemInformation.PowerStatus
    If power.PowerLineStatus = PowerLineStatus.Online And (power.BatteryLifePercent * 100) > 94 Then
    NotifyIcon_Energie_Alert.Icon = My.Resources._7p


    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Hobbl“ ()

    mondieu! 25 posts in diesem Thread, und immer noch keine klar formulierte Problemstellung.
    Ich rate mal:

    Du möchtest eine Akkustands-Anzeige, die den Akkustand regelmäßig überprüft.
    Die Anzeige soll den Wert nicht numerisch anzeigen, sondern mittels verschiedener Icon, die jeweils einen Wertebereich repräsentieren.

    wieviel davon ist richtig, und korrigiere bitte die Problemstellung, damit sie ganz richtig wird.
    Also, das mit dem wechselnden Bild hatte sich schon erledigt, ich hatte noch ein anderes Problem das wie folgt aussieht.

    Die Progressbar geht auf 100 - ein Label geht auf 1.... die Progressbar geht runter auf einen wert unter 100... geht die Progressbar WIEDER auf hundert soll im Label 2 stehen (er soll also immer sobald er bei 100 war einen wert hochgehen)

    Das Problem jetzt ist, ist der wert bei hundert zählt das Label im Sekundentakt hoch was er nicht soll.

    TheVBNoob schrieb:

    die Progressbar geht runter auf einen wert unter 100
    Negativer Fortschritt?
    Wo kommt das her?
    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!
    @TheVBNoob Überleg Dir mal den normalen Ablauf, pack ein paar solche Werte in ein Integer-Array und teste Dein Programm mit einem flotten Timer und diesen Zahlen, damit Du nicht jedes Mal warten musst, bis der Akku alle ist. ;)
    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 habe mir eine kleine Testanwendung mit 2 Buttons, einem Label und einer Progressbar gemacht ( sogar mit DataBinding :D ) :

    Spoiler anzeigen

    VB.NET-Quellcode

    1. public partial class Form1 : Form
    2. {
    3. class Progress : INotifyPropertyChanged
    4. {
    5. public event PropertyChangedEventHandler PropertyChanged;
    6. private int _value;
    7. private int maximum = 100;
    8. public int Value
    9. {
    10. get
    11. {
    12. return _value;
    13. }
    14. set
    15. {
    16. if (value <= maximum)
    17. {
    18. _value = value;
    19. NotifyPropertyChanged("Value");
    20. }
    21. }
    22. }
    23. private void NotifyPropertyChanged(String field)
    24. {
    25. if (PropertyChanged != null)
    26. {
    27. PropertyChanged(this, new PropertyChangedEventArgs(field));
    28. }
    29. }
    30. }
    31. class Zyklen : INotifyPropertyChanged
    32. {
    33. public event PropertyChangedEventHandler PropertyChanged;
    34. private int zyklen;
    35. public int Value
    36. {
    37. get
    38. {
    39. return zyklen;
    40. }
    41. set
    42. {
    43. this.zyklen = value;
    44. NotifyPropertyChanged("Value");
    45. }
    46. }
    47. private void NotifyPropertyChanged(String field)
    48. {
    49. if (PropertyChanged != null)
    50. {
    51. PropertyChanged(this, new PropertyChangedEventArgs(field));
    52. }
    53. }
    54. }
    55. private Progress value = new Progress();
    56. private Zyklen zyklen = new Zyklen();
    57. public Form1()
    58. {
    59. InitializeComponent();
    60. prgStatus.DataBindings.Add("Value", value, "Value");
    61. labelZyklen.DataBindings.Add("Text", zyklen, "Value");
    62. }
    63. private void Form1_Load(object sender, EventArgs e)
    64. {
    65. }
    66. private void button1_Click(object sender, EventArgs e)
    67. {
    68. if (value.Value == 100) return;
    69. value.Value += 10;
    70. if (value.Value == 100)
    71. {
    72. zyklen.Value++;
    73. }
    74. }
    75. private void button2_Click(object sender, EventArgs e)
    76. {
    77. value.Value -= 10;
    78. }
    79. }



    (so auf die Schnelle geschrieben :D)
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D
    also die Problemstellung lautet: zähle mit, wie oft der Wert 100 errreicht wurde?

    Dazu muss man regelmäßig testen (mittm Timer), und ausserdem muss man beim Testen identifizieren, ob der Wert sich erhöht hat.
    Nur wenn beides zutrifft:
    1. Wert hat sich erhöht
    2. Wert ist 100
    soll der Zähler incrementieren.