Wert aller Klassen zurücksetzen

  • C#

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Schrotti555.

    Wert aller Klassen zurücksetzen

    Hallo zusammen,



    ich habe ein Grid in dem einige Hundert Rechtecken (Border mit Canvas und
    Label) vorhanden sind!!!

    Jetzt habe ich eine dort eine Klasse Rechtecke in denen die Funktion
    "IsBlinking" implementiert ist.

    Das Ganze funktioniert soweit auch schon ganz gut und wenn ich ein Rechteck
    anklicke fängt es an zu blinken.

    Nun soll wenn ich auf ein anders Rechteck klicke das zuvor selektierte aber
    aufhören und da hab ich keine Ahnung wie man so etwas realisiert???

    Bin dankbar für alle Vorschläge...
    ps: bin Anfänger :)
    Dafür gibt es die Events 'GotFocus' und 'LostFocus':

    C#-Quellcode

    1. private void Control_GotFocus(object sender, EventArgs e)
    2. {
    3. //Fokus bekommen
    4. }
    5. private void Control_LostFocus(object sender, EventArgs e)
    6. {
    7. //Fokus verloren
    8. }

    Du bekommst sie, wenn du im Codeeditorfenster in der Oberen Leiste, wo zwei Comboboxen sind links (<Dein Klassenname>-Ereignisse) einstellst und rechts dann auf 'GotFocus' bzw. 'LostFocus' klickst.
    Hallo nochmal,
    @nafets3646: ich habs versucht... leider ohne erfolg!

    XAML:
    Spoiler anzeigen

    XML-Quellcode

    1. <UserControl x:Class="WpfBlock.WpfBlockChart.WpfBlockStack.BlockStack"
    2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    6. mc:Ignorable="d"
    7. d:DesignHeight="25" d:DesignWidth="25">
    8. <Grid x:Name="LayoutRoot" Focusable="True">
    9. <VisualStateManager.VisualStateGroups>
    10. <VisualStateGroup x:Name="BlinkStates">
    11. <VisualState x:Name="Blinking">
    12. <Storyboard AutoReverse="True" RepeatBehavior="Forever">
    13. <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="AnimatedBrush" Storyboard.TargetProperty="Color">
    14. <SplineColorKeyFrame KeyTime="00:00:00.5" Value="Yellow"/>
    15. </ColorAnimationUsingKeyFrames>
    16. </Storyboard>
    17. </VisualState>
    18. <VisualState x:Name="Stopped"/>
    19. </VisualStateGroup>
    20. </VisualStateManager.VisualStateGroups>
    21. <Border x:Name="border" BorderThickness="3">
    22. <Border.BorderBrush>
    23. <SolidColorBrush x:Name="AnimatedBrush" Color="Black" />
    24. </Border.BorderBrush>
    25. <Canvas Name="CanvasBackground" Background="{Binding Path=StatusColor}">
    26. <Label Name="lblStacknummer" FontSize="10" FontStretch="Normal" Margin="-4,0,0,0" Content="{Binding Path=Stacknummer}"></Label>
    27. </Canvas>
    28. </Border>
    29. </Grid>
    30. </UserControl>



    Und hier der Code dazu:
    Spoiler anzeigen

    C#-Quellcode

    1. public void BlockStack_GotFocus(object sender, EventArgs e)
    2. {
    3. this.IsBlinking = true;
    4. }
    5. public void BlockStack_LostFocus(object sender, EventArgs e)
    6. {
    7. this.IsBlinking = false;
    8. }
    9. public BlockStack()
    10. {
    11. InitializeComponent();
    12. this.GotFocus += new RoutedEventHandler(BlockStack_GotFocus);
    13. this.LostFocus += new RoutedEventHandler(BlockStack_LostFocus);
    14. this.DataContext = this;
    15. }
    16. public Int32 _Stacknummer;
    17. public Int32 _Status;
    18. public Brush _StatusColor;
    19. private static bool blinking;
    20. public bool IsBlinking
    21. {
    22. get
    23. {
    24. return blinking;
    25. }
    26. set
    27. {
    28. if (value)
    29. {
    30. VisualStateManager.GoToState(this, "Blinking", true);
    31. }
    32. else
    33. {
    34. VisualStateManager.GoToState(this, "Stopped", true);
    35. }
    36. blinking = value;
    37. }
    38. }



    wenn ich das ganze so schreibe passiert beim ankliken gar nichts ?(

    wenn ich jedoch

    C#-Quellcode

    1. this.AddHandler(Canvas.MouseDownEvent, new MouseButtonEventHandler(StackClick));

    verwende kann ich zumindest das blinken starten :thumbsup:
    wenn ich jetzt aber einen anderen Stack anklicke geht der alte immer noch nicht aus???
    irgendwie wird bei mir gotfocus und lostfocus nie ausgelöst???