Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WpfControl (userControl) in WinForm verwenden (Eventanmeldung per Lambda-Expression)
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 397
Herkunft: Germany

Themenstarter:

WpfControl (userControl) in WinForm verwenden (Eventanmeldung per Lambda-Expression)

beantworten | zitieren | melden

Hallo, ich habe das folgende Problem:

In einer bestehenden WinForm-Anwendung binde ich ein Projekt das mit WPF erstellt ist ein.
Es handelt sich um ein Tool um Daten zu filtern. Nun funktioniert das auch, die Eingabe reagiert auch (was zuerst ein Problem war).

Nun bin ich es gewohn dass ich in WPF im Code manchmal die Events mit direkt mit Lambda-Expression ausstaffiere (geht schnell und übersichtlich). Das wollte ich jetzt mit dem WpfControl in der WinForm-Appliaktion machen. Leider werden nicht alle Eventhandler angesprungen. Habe schon eine ganze Zeit im Netz gesucht, leider aber nichts brauchbares gefunden.
Hat jemand einen Tipp wie ich das machen kann (oder geht das gar nicht) ?

Hier mal mein Code:



  FilterWindow wnd = new FilterWindow(tblMaterialRohkoerper, 1);
            ElementHost.EnableModelessKeyboardInterop(wnd);
            wnd.stp_Zusatzeingaben.Visibility = Visibility.Visible;
            WindowInteropHelper helper = new WindowInteropHelper(wnd);
            helper.Owner = this.Handle;

            string pwzMaterial = "";

  //// Eventhandling, dieser funktioniert !!
  wnd.btn_Datenuebernahme.Click += (sender, args) =>
            {
                tbx_SapMaterial.Text = wnd.tbx_Zusatzeingabe.Text.Trim();
                tbx_PwzMaterial.Text = pwzMaterial;
                wnd.Close();
            };


//// Eventhandling, das niicht funktioniert. Hängt das mit dem unbekannten "DataGrid" für WinForm zusammen ??
wnd.dgFilterdaten.MouseDoubleClick += (sender, args) =>
            {
                if(sender is DataGrid)
                {
                    System.Windows.Controls.DataGrid dgDaten = (System.Windows.Controls.DataGrid) sender;
                    if (wnd.stp_Zusatzeingaben.Visibility == Visibility.Visible)
                    {
                        var xx = dgDaten.Columns.AsEnumerable().Where(x => x.Header.ToString() == "SapMaterial").FirstOrDefault();
                        if (xx != null)
                        {
                            string materialRohkoerper = ((DataRowView)(dgDaten.CurrentItem))["SapMaterial"].ToString();
                            wnd.tbx_Zusatzeingabe.Text = materialRohkoerper;
                            tbx_SapMaterial.Text = materialRohkoerper;

                            //// Z-Artikelcode auslesen
                            if(((DataRowView) (dgDaten.CurrentItem))["ARTCODE"] != DBNull.Value && ((DataRowView) (dgDaten.CurrentItem))["ARTCODE"].ToString().Trim() != "")
                            {
                                zMaterial = ((DataRowView) (dgDaten.CurrentItem))["ARTCODE"].ToString().Trim();
                                tbx_zMaterial.Text = zMaterial;
                            }
                        }

                    }
                }
            };





            wnd.Show();


Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von oehrle am .
private Nachricht | Beiträge des Benutzers
Stu42
myCSharp.de - Member



Dabei seit:
Beiträge: 506
Herkunft: Aus dem Norden

beantworten | zitieren | melden

Geht denn das "wnd.dgFilterdaten.MouseDoubleClick"-Event wenn du es klassisch mit einer Methode verbindest?

Könnte mir vorstellen dass das MouseDoubleClick einfach nicht aufgerufen wird.
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1053

beantworten | zitieren | melden

Breakpoint auf das if und dann schauen, ob ein MouseDoubleClick überhaupt ausgelöst wird.

[Artikel] Debugger: Wie verwende ich den von Visual Studio?
private Nachricht | Beiträge des Benutzers
oehrle
myCSharp.de - Member



Dabei seit:
Beiträge: 397
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Ne, wird nicht angesprungen. Hatte ich schon getestet.
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5985
Herkunft: Leipzig

beantworten | zitieren | melden

Hi oehrle,

ich bezweifle ja, daß es an der Art der Zuweisung des EventHandlers liegt. Wird denn der EventHandler aufgerufen, wenn du ihn stattdessen in eine eigene Methode auslagerst?
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers