In C# ich versuche, ein kleines Spieltyp-Programm zu erstellen und eine Ladeleiste zu erstellen, die die Fortschrittsleiste verwendet und der Text ein Label verwendet, z
C# Etikettentext wird nicht aktualisiert, während der Fortschrittsbalkenwert
private void StartLoading_Click(object sender, EventArgs e)
{
MainProgressBar.Maximum = 25;
int P = 0;
while (P < 25)
{
// Delay
System.Threading.Thread.Sleep(130);
// Increase Progress
P++;
// Set Progress Bar Value
MainProgressBar.Value = P;
// Set Text Above Progress Bar
LoadingText.Text = P + "/25";
}
}
Ps: ein Beispiel ist, herer 25 und ich mag der Beschriftungstext, während die Bar aktualisieren - 1. Ich nicht etwas Huge Code will, ich will es wie dies ist für Sie diesen Schnipsel
Versuchen Sie zu suchen, blockieren Sie nicht den UI-Thread, verwenden Sie einen Hintergrundarbeiter. Ja, das ist "riesiger Code", aber es ist notwendig. – CodeCaster
Wenn Sie Ihre Steuerelemente im GUI-Thread aktualisieren, werden die meisten Steuerelemente keine Nachrichten verarbeiten (weil sie die Nachrichten erst erhalten, nachdem die Ausführung beendet wurde). Sie sollten einen Arbeitsthread verwenden. Die zweite Methode (Verarbeitung von Nachrichten) wird nicht empfohlen. Fortschrittsbalken hat ein anderes Verarbeitungssystem, daher funktioniert es wie erwartet, aber es ist meistens eine Ausnahme in grafischen Steuerelementen. – Julo
Nehmen Sie in Ihrem Ansichtsmodell zwei Eigenschaften vor, eine für den Maximalwert und eine für den aktuellen Wert, und binden Sie dann an beide Werte in Ihrer Ansicht. – LordWilmore