Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Sa 17.04.10 10:29 
Hallo zusammen,

folgende Frage:

ich habe eine Klassenbibliothek mit einer einfachen Funktion erstellt. In dieser Funktion gibt es eine Schleife. Da die Schleife recht umfangreich ist bzw. länger dauert, würde ich gerne automatisch eine Progressbar beim Schleifendurchlauf anzeigen lassen.

Leider geht es nicht so einfach wie gehofft, mit Variablendeklaration und Instanzierung (new progressbar...; progressbar.visibile=true, ...) und der entsrpechenden value Zuweisung.

Ideal wäre für mich, wenn die Progressbar noch in WPF erzeugt werden könnte, da ich mich hier gerade etwas einarbeite, ist aber nicht zwingend.

Im Visual Studio2008 gibt es leider keine Vorlage, die z.B. heißt "WPF Klassenbibliothek".

Wie schaffe ich es also, dass ich die DLL in ein beliebiges Projekt einbinde, und mir beim Schleifendurchlauf eine wenn möglich in WPF erzeugte Progressbar angezeigt wird?

Für Eure Hilfe schon vorab Vielen Dank.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Sa 17.04.10 11:15 
Hallo,

nein, es gibt keine WPF-Klassenbibliothek. Du kannst das normale Klassenbibliothek-Projekt verwenden.

In deiner Klassenbibliothek solltest du auch kein WPF-UserControl implementieren. Klassenprojekt = Logik, UC = Präsentation. Willst du also Informationen über den aktuellen Bearbeitungsstand, musst du in deiner Klassenbibliothek entsprechende Informationen zugänglich machen oder per Event interessierten mitteilen.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
public void DoSomething(int loops)
{
   int counter = 0;
   while (time < loops)
   {
       Thread.Sleep(1000);
       counter ++;
       
       OnCycling(counter);
   }
}

public event EventHandler<EventArgs<int>> ProcessInfo;

private void OnCycling(int process)
{
    if (ProcessInfo != null)
    {
       ProcessInfo(this, process);
    }
}


An der Stelle wo du die Funktion DoSomething verwendest musst du nun halt eine ProgressBar anzeigen und beim Event aktuallisieren.

Gruß
Oppi35 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Sa 17.04.10 11:49 
Super vielen Dank.