Merkwürdige Exception in deiner DLL, nicht aber in einer WinForm

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Merkwürdige Exception in deiner DLL, nicht aber in einer WinForm

    Moin Leute.
    Ich bin am Verzweifeln (das habt Ihr wohl noch nicht von mir gehört).
    In meinem Makroprogramm ziehe ich auch Bilder von Kameras ein.
    Gleichartige TCP-Kameras (das hat nix mit der Exception zu tun) werden per UDP aufgesammelt und sollen in einem Dialog zur Anzeige zwecks Auswahl angezeigt werden.
    Dieser Code läuft in einer WinForm:
    Spoiler anzeigen

    C#-Quellcode

    1. using System.Collections.Generic;
    2. using System.Net;
    3. using System.Windows.Forms;
    4. // Form mit Label Label1 und ComboBox cbbCameras
    5. namespace WindowsFormsApp1
    6. {
    7. public partial class MainForm : Form
    8. {
    9. public MainForm()
    10. {
    11. this.InitializeComponent();
    12. this.DisplayCameras();
    13. }
    14. private void DisplayCameras()
    15. {
    16. Dictionary<IPAddress, string> cameras = new Dictionary<IPAddress, string>
    17. {
    18. { IPAddress.None, "none" }
    19. };
    20. //foreach (KeyValuePair<IPAddress, string> kvp in this.FoundCameras)
    21. {
    22. //cameras.Add(kvp.Key, kvp.Value);
    23. cameras.Add(new IPAddress(new byte[] { 192, 168, 5, 127 }), "CameraXYZ");
    24. }
    25. BindingSource binding = new BindingSource();
    26. binding.DataSource = cameras;
    27. this.cbbCameras.ValueMember = "Key";
    28. this.cbbCameras.DisplayMember = "Value";
    29. this.cbbCameras.DataSource = binding;
    30. // die erste Nicht-"none"-Kamera
    31. this.cbbCameras.SelectedIndex = 1;
    32. }
    33. private void CbbCameras_SelectedIndexChanged(object sender, System.EventArgs e)
    34. {
    35. this.Label1.Text = ((IPAddress)(this.cbbCameras.SelectedValue)).ToString();
    36. }
    37. }
    38. }
    Bei demselben Code in einer DLL knallt es:

    die Meldung ist:
    System.ArgumentException: "An den neuen Anzeigemember kann nicht gebunden werden.
    Parametername: newDisplayMember"
    HResult 0x80070057
    Hat einer von Euch eine Idee, was da zu tun ist?
    ====
    Gelöst:
    Initial hatte ich eine leere Datasourde gebunden.

    C#-Quellcode

    1. this.cbbCameras.DataSource = null;
    vor der Belegung und es läuft.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    [Update]: Ah, sorry, du hast ja geloest. Hatte ich ueberlesen.

    Kannst du mal nur zum Test an Dictionary<String,String> binden?
    Ich sehe hier nicht, wieso das nicht funktionieren sollte.
    Das Einzige, was mir einfiele, waehre, dass IpAddress als Indexer problemetisch ist.

    Framework oder .NET?
    Welche Versionen?

    Danke,

    Klaus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „loeffel“ ()

    Auch wenn es erledigt ist, würde es mich interessieren.
    Ich bin daran gescheitert, das Szenario zu rekonstruieren.
    Ich habe
    • ein WinForms-Projekt
    • eine DLL mit Form, welches die cbb und den Post#1-Code enthält
    Das WinForms-Projekt erzeugt aus dem DLL-Form einen Dialog, der angezeigt wird. Es kommt (leider?) kein Fehler.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.