Timer in WPF Label anzeigen
Hallo zusammen,
ich habe dank hacktors hinweis ein WPF Form gebaut.
Da habe ich ein Label namens LabelTimer.
In diesem Label soll ein Timer laufen.
Nur wie kriege ich hin das die Zeit auch in diesem LabelTimer angezeigt wird.
Hier erstmal der Code für das Fenster:
Hier der Code für den Timer:
Hoffe es kann mir jemand helfen um das hinzubekommen.
Danke und Viele Grüße
gfritz74
ich habe dank hacktors hinweis ein WPF Form gebaut.
Da habe ich ein Label namens LabelTimer.
In diesem Label soll ein Timer laufen.
Nur wie kriege ich hin das die Zeit auch in diesem LabelTimer angezeigt wird.
Hier erstmal der Code für das Fenster:
[xml]$Timer_Form = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Computer Reboot Notifcation" Icon="C:\Users\fritz\source\repos\WpfApp1\Warnung.png" Height="446" Width="725" ResizeMode="NoResize" Topmost="True" WindowStartupLocation="CenterScreen" Background="White" FontFamily="Arial Black" ShowInTaskbar="False" SizeToContent="WidthAndHeight">
<Grid Margin="15,15,15,15">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Content="Nach der Installation von Sicherheitsupdates ist ein Neustart des Computers zwingend erforderlich.
Dieser ist auch nach mehreren Hinweisen nicht erfolgt.
Zur Wahrung der Sicherheitsniveuas muss dieser Heute erfolgen.
Sie haben nun noch einmalig die Möglichkeit den Restart zu verschieben.
Ansonsten sichern Sie Ihre Daten, schließen die geöffneten Anwendungen 
und klicken anschließend auf den Button Neustart.

WARNUNG: Der Rechner wird nach Ablauf der Zeit neu gestartet!

Vielen Dank ihr IT-Services-Team" FontFamily="Arial" FontWeight="Bold" FontSize="14" Padding="10,10,10,10" RenderTransformOrigin="0.5,0.5" Margin="0,0,0,200">
<Label.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform AngleX="0"/>
<RotateTransform/>
<TranslateTransform X="0"/>
</TransformGroup>
</Label.RenderTransform>
</Label>
<Label x:Name="LabelTimer" Content="LabelTimer" HorizontalAlignment="Left" Margin="0,190,0,0" VerticalAlignment="Top" Height="56" Width="340" FontFamily="Arial Black" FontWeight="Bold" FontSize="40" Foreground="Red"/>
<Grid Margin="10,270,10,0">
<Button x:Name="B_Reboot" Content="Neustart" HorizontalAlignment="Left" Margin="0,20,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.393,0.489" Width="120" Height="50" FontFamily="Arial" FontWeight="Bold"/>
<Button x:Name="B_1Hour" Content="1 Stunde
verzögern" HorizontalAlignment="Left" Margin="140,20,0,0" VerticalAlignment="Top" Width="120" Height="50" FontFamily="Arial" FontWeight="Bold"/>
<Button x:Name="B_4hour" Content="4 Stunden
verzögern" HorizontalAlignment="Left" Margin="280,20,0,0" VerticalAlignment="Top" Width="120" Height="50" FontFamily="Arial" FontWeight="Bold"/>
<Image HorizontalAlignment="Left" Height="99" VerticalAlignment="Top" Width="120" Margin="545,0,0,0" Source="C:\Users\fritz\source\repos\WpfApp1\IS_Logo.bmp" Stretch="Fill"/>
</Grid>
<Grid Margin="-1030,0,1030,133"/>
</Grid>
</Window>
"@
#Timer
#Create a form
$XMLReader = (New-Object System.Xml.XmlNodeReader $Timer_Form)
$TimerForm = [Windows.Markup.XamlReader]::Load($XMLReader)
#Reboot Button
$B_Reboot = $TimerForm.FindName('B_Reboot')
$B_Reboot.add_click({write-host ich habe es geschafft,$TimerForm.Close()})
#1Hour Button
$B_1Hour = $TimerForm.FindName('B_1Hour')
$B_1Hour.add_click({
$timerUpdate.Stop()
$TotalTime = 3600
Create-GetSchedTime -SchedTime $TotalTime
$timerUpdate.add_Tick($timerUpdate_Tick)
$timerUpdate.Start()
$B_1Hour.IsEnabled = $false
$B_4Hour.IsEnabled = $false
})
#4Hour Button
$B_4hour = $TimerForm.FindName('B_4hour')
$B_4hour.add_click({
$timerUpdate.Stop()
$TotalTime = 14400
Create-GetSchedTime -SchedTime $TotalTime
$timerUpdate.add_Tick($timerUpdate_Tick)
$timerUpdate.Start()
$B_1Hour.IsEnabled = $false
$B_4Hour.IsEnabled = $false
})
Hier der Code für den Timer:
#Function für Timer
Function Create-GetSchedTime {
Param(
$SchedTime
)
$script:StartTime = (Get-Date).AddSeconds($TotalTime)
$RestartDate = ((get-date).AddSeconds($TotalTime)).AddMinutes(-5)
$RDate = (Get-Date $RestartDate -f 'dd.MM.yyyy') -replace "\.","/" # 16/03/2016
$RTime = Get-Date $RestartDate -f 'HH:mm' # 09:31
#&schtasks /delete /tn "Post Maintenance Restart" /f
#&schtasks /create /sc once /tn "Post Maintenance Restart" /tr "'C:\Windows\system32\cmd.exe' /c shutdown -r -f -t 300" /SD $RDate /ST $RTime /f
}
#Function Timer-Formular
Function timer-form
{
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName( "Microsoft.VisualBasic") | Out-Null
$outlook = @(Get-Process | ?{ $_.Name -eq "outlook" }).Count
$word = @(Get-Process | ?{ $_.Name -eq "winword" }).Count
$excel = @(Get-Process | ?{ $_.Name -eq "excel" }).Count
$timerUpdate = New-Object 'System.Windows.Forms.Timer'
$TotalTime = 14400 #in seconds
Create-GetSchedTime -SchedTime $TotalTime
$timerUpdate_Tick={
# Define countdown timer
[TimeSpan]$span = $script:StartTime - (Get-Date)
# Update the display
$hours = "{0:00}" -f $span.Hours
$mins = "{0:00}" -f $span.Minutes
$secs = "{0:00}" -f $span.Seconds
$labelTime.Text = "{0}:{1}:{2}" -f $hours, $mins, $secs
$timerUpdate.Start()
if ($span.TotalSeconds -le 0)
{
$timerUpdate.Stop()
shutdown -r -f /t 0
Remove-Variable * -ErrorAction SilentlyContinue
Remove-Item -Path "C:\Boottime" -Force -Recurse
$global:Form.Close()
}
}
$Form_StoreValues_Closing=
{
#Store the control values
}
$Form_Cleanup_FormClosed=
{
#Remove all event handlers from the controls
try
{
$Form.remove_Load($Form_Load)
$timerUpdate.remove_Tick($timerUpdate_Tick)
#$Form.remove_Load($Form_StateCorrection_Load)
$Form.remove_Closing($Form_StoreValues_Closing)
$Form.remove_FormClosed($Form_Cleanup_FormClosed)
}
catch [Exception]
{ }
}
Hoffe es kann mir jemand helfen um das hinzubekommen.
Danke und Viele Grüße
gfritz74
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1339156019
Url: https://administrator.de/contentid/1339156019
Ausgedruckt am: 25.11.2024 um 14:11 Uhr
6 Kommentare
Neuester Kommentar
Im Endeffekt sollte es so in der Richtung aussehen.
https://wpf-tutorial.com/misc/dispatchertimer/
https://wpf-tutorial.com/misc/dispatchertimer/