Datum:
hi, hab hier ein Problem, Hätte gerne einen Button, der beim Klicken fr eine bestimmte Zeit blinkt und dann wieder in en Anfangszustand gesetzt wird. Ich weiß, dass es mit einem Timer Intervall gehen muss, aber irgendwie bekomm ich nicht ganz hin. Vlt hat ja einer einen Codeauschnitt wie es aussehen könnte. Gruß Agit
Datum:
Na komm, das schaffst du ;-) Stichwörter: Timer, Button.BackColor
Datum:
hi Sharping, es is mir auch klar, dass ich BackColor verwenden muss. nun es ist so. Wenn ich auf den Button klicke ist mein Code im Klick-Ereigniss. Hier ändere ich die Farben dann über eine schleife. Das Problem ist, dass die Oberfläche diese zwischenschritte nicht anzeigt, erst wenn die Routine verlasen wird ändert sich auch die Farbe des Buttons. Dabke fr die Hilfe. Gruß Agit
Datum:
> Wenn ich auf den Button klicke ist mein Code im Klick-Ereigniss. > Hier ändere ich die Farben dann über eine schleife. > Das Problem ist, dass die Oberfläche diese zwischenschritte nicht > anzeigt, erst wenn die Routine verlasen wird ändert sich auch die Farbe > des Buttons. Klingt logisch... Die GUI wird wahrscheinlich erst aktualisiert, wenn die Klick-Routine abgearbeitet ist - da ist deine Schleife aber auch schon durchgelaufen... Du könntest der GUI mitteilen, dass sie sich aktualisieren soll, aber das halte ich irgendwie für unsauber... Ändere es um: - in der Klick-Routine startest du den Timer - Der Timer-Event verwaltet sich selbst, er hat die Anzahl der nötigen Schleifendurchläufe etc. - Jedesmal wenn der Timer-Event auftritt änderst du die Farbe und verlässt danach die Event-Routine wieder (d.h. du brauchst z.T. statische Variablen in der Event-Routine, damit du dir den Zustand merken kannst) - Wenn das letzte Ändern der Farbe erreicht ist stoppst du den Timer (Alternativ kannst du den Timer auch jedesmal in seiner Event-Routine neu starten, nur eben nach dem letzten Farbwechsel nicht). Ralf
Datum:
Hier ein Codeausschnitt, der ein Label im Sekundentakt blinken lässt:
public partial class MainWindow : Window
{
DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
public MainWindow()
{
InitializeComponent();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
}
private int z = 0;
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
if (z % 2 == 0)
{
label1.Background = Brushes.Blue;
dispatcherTimer.Start();
}
else
{
label1.Background = Brushes.Yellow;
dispatcherTimer.Start();
}
z++;
if (z >= 10)
{
dispatcherTimer.Stop();
z = 0;
}
}
private void label1_MouseDown(object sender, MouseButtonEventArgs e)
{
dispatcherTimer.Start();
}
}
|
Datum:
hi, danke Ralf. c##### schrieb: > Hier ein Codeausschnitt wieso kann ich DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); bei mir nicht anwenden. Hier der Code
public partial class DeviceMappingControl : UserControl
{
private int z = 0;
private readonly FCatEntryList _factEntryListDevice;
private readonly FCatEntryList _factEntryListINIC;
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); // Fehlermeldung: Der Typ- oder Namespacename "DispatcherTimer" ist im Namespace "System.Threading" nicht vorhanden. (Fehlt ein Assemblyverweis?)
|
Ich hab kein System.Windows.Threading, sondern nur System.Threading. Benötige ich evt. ein Assembly`? Danke für die Hilfe. Gurß Agit
Datum:
Ralf schrieb: > - in der Klick-Routine startest du den Timer Wie sieht das dann aus codemßig, muss ich nur ein eintervall setzen oder ? Gruß Agit
Datum:
Agit A. schrieb: > Benötige ich evt. ein Assembly`? Habs hinbekommen, Benötigte das assembly WindwoBase. Gruß Agit
Datum:
Ich hab's als WpfApplication ausprobiert und arbeite mit Visual C# 2010 Express. Microsoft .NET Framework Version 4.0.30319 RTMRel.
using System.Windows.Threading; |
mit
DispatcherTimer dispatcherTimer = new DispatcherTimer(); |
oder alternativ
System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); |
funktionieren.
Datum:
Mensch wenn man nicht weiß, wie etwas in C# bzw. .Net Framework zu benutzen ist, dann schaut man in die Doku. In dem Fall MSDN (ich nehme mal an, dass du die WinForms benutzt): http://msdn.microsoft.com/de-de/library/system.win... Da gibts sogar ein Beispiel.
Datum:
oh main gott Kannst du echt nicht googeln oder was? http://www.morkalork.com/mork/article/47/How_to_us...
Datum:
hi, Leute seid nicht immer so zickig :) @c##### danke funnktioniert wunderbar. Gruß Agit