C# Fenster miteinander Verbinden

Cromon

Erfahrenes Mitglied
Hallo Janik

Die Frage ist: Warum in einer separaten Klasse und nicht in der Klasse des Fensters? Wie willst du in der Unterklasse auf die Textbox des Fensters zugreifen?

Viele Grüsse
Cromon
 

x1xJanikx1x

Mitglied
Hallo Cromon,

danke für den Hinweis, im nachhinein habe ich mich das auch gefragt.

Diesen Punkt habe ich jetzt geändert und mein Code sieht nun so aus:

Code:
namespace WpfApplication1
{
    /// <summary>
    /// Interaktionslogik für Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {

        public Window1()
        {
            InitializeComponent();
        }


        private void TextBox_TextChanged(object sender, TextChangedEventArgs e);
    
       
            private string name;  // the name field
            public string Name    // the Name property
            {
                get
                {
                    return name;
                }

                set
                        {
                        name = value;
                        }
                }
            
        }
   }

Diese Änderung ändert allerdings nichts auf die Frage was ich anstatt "Name/Name" eintragen sollte.

Ich hoffe du kannst mir da noch einmal helfen.

LG
Janik
 

x1xJanikx1x

Mitglied
Hallo,

habe das Problem jetzt so gelöst:
Window 1:
Code:
        private void Button_Click(object sender, RoutedEventArgs e)
        {

            DateTime now = DateTime.Now;
            string currentDate = now.ToLongDateString();
            string currentTime = now.ToLongTimeString(); 
            
            Fenster1.Text = currentDate + "    " + currentTime;


Window 2:
Code:
        private string _Text;
        public string Text 
        {
            get
            { return _Text; }
            set
            {
                _Text = value;
                TextBox2.Text = _Text;
            }
        }

Es klappt auch alles, allerdings möchte ich jetzt ein Viereck in dem 2. Fenster das sich bei jedem Klick auf den Button im ersten Fenster dreht.
Dies wollte ich so machen:

Window 1:
Code:
                    RotateTransform rotateTransform1 =
                    new RotateTransform(15);
                    Fenster1.Viereck = rotateTransform1;


Window 2:
Code:
        private string _Viereck;
        public string Viereck
        {
            get
            { return _Viereck; }
            set
            {
                _Viereck = value;
                Rechteck2.RenderTransform = _Viereck;
            }
        }

Nun zu meinem Problem: Ich habe folgende Fehlermeldung:

Fehler 1 Eine implizite Konvertierung vom Typ "System.Windows.Media.RotateTransform" in "string" ist nicht möglich.
Fehler 2 Eine implizite Konvertierung vom Typ "string" in "System.Windows.Media.Transform" ist nicht möglich.


Wie oft sich das Viereck dreht ist im moment noch irrelevant.
Was kann ich dagegen unternehmen bzw. wo liegt mein Fehler.
Danke schonmal für eure Hilfe

LG Janik
 
Zuletzt bearbeitet:

Cromon

Erfahrenes Mitglied
Hallo Janik

Dein Property Viereck ist vom Typ string, du verwendest aber RotateTransform bzw Transform als Typen. Das passt natürlich nicht.

viele Grüsse
Cromon
 

x1xJanikx1x

Mitglied
Hallo Cromon,

du hattest recht ich musste lediglich den Type ändern, danke für den Hinweis.

Nun möchte ich das sich die Farbe des Rechtecks abhängig von den Sekunden ebenfalls ändert.
Dazu habe ich den Code den du mir mal gegeben hattest umgeschrieben:

Window 1:
Code:
                    var Now = DateTime.Now;
                    if ((Now.Second % 2) == 0)
                    {
                        Fenster1.Viereck1 = System.Windows.Media.Brushes.Red;
                    }
                    else
                    {
                        Fenster1.Viereck1 = System.Windows.Media.Brushes.Blue;
                    }


Window 2:
Code:
        private SolidColorBrush _Viereck1;
        public SolidColorBrush Viereck1
        {
            get
            { return _Viereck1; }
            set
            {
                _Viereck1 = value;
                Rechteck2.RenderTransform = _Viereck;
            }
        }

Ich habe zwar keine Fehlermeldung, allerdings ändert sich die Farbe auch nicht.
Ich hoffe du erkennst woran es liegt.

LG Janik
 

x1xJanikx1x

Mitglied
Hallo,

ich konnte mein anderes Problem jetzt ebenfalls erfolgreich bewältigen.
Für alle die die es interessiert hier mein Code:

Window 1:

Code:
                    var Now = DateTime.Now;
                    if ((Now.Second % 2) == 0)
                        {
                            Fenster1.Viereck1 = System.Windows.Media.Brushes.Red;
                        }
                    else
                        {
                            Fenster1.Viereck1 = System.Windows.Media.Brushes.Blue;
                        }

Window 2:

Code:
        private SolidColorBrush _Viereck1;
        public SolidColorBrush Viereck1
        {
            get
            { return _Viereck1; }
            set
            {
                _Viereck1 = value;
                Rechteck2.Fill = _Viereck1;
            }
        }

Danke für eure Unterstützung und Hilfe

LG Janik