Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

WPF-Controls in Windows Forms app einbinden [C#]

Empfohlene Antworten

Veröffentlicht

hi leute,

ich interessiere mich momentan für die WPF Controls und habe mich diesbezüglich eingelesen.

Ich wollte nun ein WPF Control (Listbox) in meine Windows Form Anwendung einfügen. Das sieht bis jetzt ungefähr so aus:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;



namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)

        {


            System.Windows.Forms.Integration.ElementHost host = new  System.Windows.Forms.Integration.ElementHost();

            System.Windows.Controls.ListBox wpfListBox = new System.Windows.Controls.ListBox();

            for (int i = 0; i < 10; i++)

            {

                wpfListBox.Items.Add("Item " + i.ToString());

            }

            host.Controls.Add(wpfListBox); //hier wird der Fehler angezeigt

            host.Dock = DockStyle.Fill;

            this.Controls.Add(host);


        }

    }

}


Ich habe dies strikt nach anleitung gemacht, welche man unter folgendem Link nachlesen kann:

klick mich

Jedoch wird mir bei der übergabe des wpf controls and den elementhost folgender Fehler geworfen:

Erster Fehler:

1-Argument: kann nicht von "System.Windows.Controls.ListBox"

in "System.Windows.Forms.Control" konvertiert werden.

Zweiter Fehler:

Die beste Übereinstimmung für die überladene System.Windows.Forms.Control.ControlCollection.Add(System.Windows.Forms.Control)-Methode hat einige ungültige Argumente.

Dann habe ich gedacht ich hätte den Falschen elementhost typ gewählt, habe aber festgestellt das es keinen anderen gibt.

Ich hoffe es kann mir jemand weiterhelfe,

lg

Gateway

Hallo,

nur mal so aus Interesse...

Warum erstellst Du keine WPF-Anwendung?

Wenn Dir die Controls gefallen (ich sehe das auch so :)) kannst Du doch XAML schreiben oder die IDE dafür nutzen.

Gruß,

Thomas

  • Autor
Hallo,

nur mal so aus Interesse...

Warum erstellst Du keine WPF-Anwendung?

Wenn Dir die Controls gefallen (ich sehe das auch so :)) kannst Du doch XAML schreiben oder die IDE dafür nutzen.

Gruß,

Thomas

Der Grund ist recht einfach, ich habe schön öffters reine WPF Anwendungen geschrieben und habe daher gemerkt das die Datenanbiendungsmöglichkeiten einfach nur grottig sind.

Da ich jedoch in den meisten meiner Anwendungen auf DBs zugreife eignet sich dies nicht wirklich.

Was mir persöndlich am meisten fehlt ist ein Datagridview.

Ich könnte mir natürlich ein solches Control kaufen (was mir teuer wäre) oder selbst mit Blend schreiben, wo mir jedoch der Aufwand zu groß wäre.

Also habe ich mich entschieden bei windows Forms zu bleiben und die jeweiligen Controls die ich benötige zu importieren.

Gruß,

Simon

Was mir persöndlich am meisten fehlt ist ein Datagridview.

Was spricht gegen das DataGrid Control (DataGrid Class (System.Windows.Controls))?

  • Autor
Was spricht gegen das DataGrid Control (DataGrid Class (System.Windows.Controls))?

Das Framework 4.0, sowie das Visual Studio 2010, das ich nicht besitze. :rolleyes:

Kleines Zitat aus deinem Link:

This page is specific to

Microsoft Visual Studio 2010/.NET Framework 4.0

Desweiteren habe ich mir diesbezüglich schon Videos der Beta angesehn, welche darauf hinweisen das man das Datagridview bei größeren Datenmengen vergessen kann, da dieses dann dazu neigt enorm lange zeiten beim redraw zu benötigen.

Bearbeitet von Gateway_man

Das Control gibt es auch im WPF Toolkit.

  • Autor

Wie ich schon in der Änderung darauf hingewiesen habe, hat dieses bei größeren Datenmengen nicht so gute Laufzeitwerte wie beispielsweise das DGV einer Windows Form Anwendung, desweiteren sind die Datenanbindungsmöglichkeiten in WPF sehr begrenzt, so vermisste ich zu beispiel meine DB Provider etc.

Zurück zum Thema.

Ich habe bereits die geschafft controls zu implementieren, jedoch nur über den designer. Bei der Code deklaration stellt sich mir immernoch das problem, welches ich nicht verstehe. Grundsätzlich würde es im Designer genügen, jedoch wäre mir die initialsierung im Code wesentlich lieber.

Wäre sehr erfreut wenn jemand eine lösung parat hat ;-)

Lg

Gateway

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.