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

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von kstanger
Thema: Wozu BindingSource
Am Heute, im Forum: Grundlagen von C#

Hallo,
ich habe schon verschiedene Artikel zu BindingSource gelesen und bin immer wieder auf Relationale Datenbanken gestoßen. Meine Anwendung ist aber sehr klein und hat ganz einfache Datenmodelle. Bei einer Liste fülle ich Spalten mittels ComboBox mit Daten aus einer anderen Liste. Aber dafür eine Datenbank einsetzen ist wie mit Kanonen auf Spatzen geschossen.
Zur Darstellung nutze ich DataGridView.
Sowohl


myDataGridView.DataSource = meineDaten
als auch


myDataGridView.DataSource = myBindingSource
myBindingSource.DataSource = meineDaten
funktionieren.
Gibt es für meinen Fall (Einfache Datenmodelle = Listen, und die eine ComboBox) noch Gründe, warum ich BindingSource benutzen sollte?

Thema: DataGridView füllen vereinfachen
Am Heute, im Forum: Grundlagen von C#

Habe ich gemacht - funktioniert. Auch in die Listen habe ich mich etwas eingearbeitet.
--- Mühsam ernährt sich das Eichhörnchen ---

Thema: DataGridView füllen vereinfachen
Am Gestern, im Forum: Grundlagen von C#

Hallo allerseits,
ich möchte Daten aus einer Json-Datei in DataGridView darstellen. Dazu habe ich einen Code, der auch funktioniert. Den möchte ich aber verbessern.


            string jsonString = File.ReadAllText(@"C:\users\kstan\source\LED\testextension.txt");
            Songs = JsonSerializer.Deserialize<Song[]>(jsonString);
            string[] row = new string[5];
            for (int loop = 0; loop < Songs.Length; loop++)
            {
                row[0] = Songs[loop].VRelease;
                row[1] = Songs[loop].VTrack;
                row[2] = Songs[loop].VTitle;
                row[3] = Songs[loop].VArtist;
                row[4] = Songs[loop].VAlbum;
                songsDataGridView.Rows.Add(row);
            }
songsDataGridView.Rows.Add verlangt ein string-Array; ich habe aber ein Json-Object - daher speichere ich das um in ein string-Array.
1. Gibt es eine Möglichkeit, das Songs-Object direkt in DataGridView einzulesen?
2. Wie würde ein databinding aussehen? Ich kenne das nicht und komme mit der Doku nicht wirklich klar.

Thema: Werte werden bei Serialisierung nicht gesetzt
Am im Forum: Grundlagen von C#

Gut zu wissen - da ich aber erst am Anfang bin und fast nichts umstellen muss, ist es für mich einfach, die Properties identisch zu machen.

Thema: Werte werden bei Serialisierung nicht gesetzt
Am im Forum: Grundlagen von C#

Danke - ich hatte das einfach übersehen.
Das V ist historisch gewachsen. Das kann weg.

Thema: Werte werden bei Serialisierung nicht gesetzt
Am im Forum: Grundlagen von C#

Hallo allerseits,
im folgenden Programm ist das Array immer leer.


using System;
using System.IO;
using System.Text.Json;
using System.Windows.Forms;

namespace test123
{
    public partial class Form1 : Form
    {
        Song[] Songs;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string jsonString = File.ReadAllText(@"C:\users\kstan\source\LED\testextension.txt");
            Songs = JsonSerializer.Deserialize<Song[]>(jsonString);
            for (int loop = 0; loop < Songs.Length; loop++)
            {
                MessageBox.Show(Songs[loop].VTitle);
            }

        }

        [Serializable]
        public class Song
        {
            public string VRelease { get; set; }
            public string VTrack { get; set; }
            public string VTitle { get; set; }
            public string VArtist { get; set; }
            public string VAlbum { get; set; }

            public Song(string vRelease, string vTrack, string vTitle, string vArtist, string vAlbum)
            {
                VRelease = vRelease;
                VTrack = vTrack;
                VTitle = vTitle;
                VArtist = vArtist;
                VAlbum = vAlbum;
            }

            public Song()
            {
            }
        }
    }
}

Nach dem einlesen mit File.Read steht in jsonString ein sauberer Json String. Songs.Length ist in meinem Fall 7. Trotzdem zeigt die MessageBox immer leer an.
Die Json-Datei ist

[
  {
    "ReleaseDate": "22.11.1968",
    "Track": "29",
    "Title": "Revolution 9",
    "Artist": "Beatles",
    "Album": "The Beatles White Album"
  },
  {
    "ReleaseDate": "1960",
    "Track": "6",
    "Title": "Fools Rush In",
    "Artist": "Frank Sinatra",
    "Album": "Nice N Easy"
  },
  {
    "ReleaseDate": "11.11.1971",
    "Track": "1",
    "Title": "One of These Days",
    "Artist": "Pink Floyd",
    "Album": "Meddle"
  },
  {
    "ReleaseDate": "1988",
    "Track": "7",
    "Title": "Where Is My Mind?",
    "Artist": "Pixies",
    "Album": "Surfer Rosa"
  },
  {
    "ReleaseDate": "5.1981",
    "Track": "9",
    "Title": "Can't Find My Mind",
    "Artist": "Cramps",
    "Album": "Psychedelic Jungle"
  },
  {
    "ReleaseDate": "10.6.2003",
    "Track": "13",
    "Title": "Scatterbrain. (As Dead As Leaves.)",
    "Artist": "Radiohead",
    "Album": "Hail to the Thief"
  },
  {
    "ReleaseDate": "30.6.1992",
    "Track": "3",
    "Title": "Dress",
    "Artist": "P J Harvey",
    "Album": "Dry"
  }
]
Der Debugger zeigt mit auch, dass die Daten immer Null sind. Warum?
Was ist da falsch?

Thema: Listview per Code aufrufen
Am im Forum: Grundlagen von C#

Hallo allerseits,

ich möchte die Instanz einre ListView-Klasse in einem Formular darstellen.
Ich dachte, das geht so:


    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            ListView listView2 = new ListView();
        }
    }

Im Formular wird aber nichts dargestellt. Muss ich das ListView noch an das Form anbinden?

Thema: Textbox nur für Zahlen
Am im Forum: Grundlagen von C#

Gut - da schau ich mal nach

Thema: Serialisierung von ListView
Am im Forum: Grundlagen von C#

Ich merke, dass es bei mir mit der Objektorientierung noch ziemlich hapert.
Jetzt funktioniert es jedenfalls und für heute reicht es auch

Thema: Serialisierung von ListView
Am im Forum: Grundlagen von C#

Ich versuche, jetzt Schritt für Schritt deinen Vorschlägen zu folgen.

Zitat
Annahme, dass Farbe Deine Datenklasse ist


    [Serializable]
    public class Farbe
    {
        public byte FarbeNr { get; set; }
        public byte FarbeRot { get; set; }
        public byte FarbeGruen { get; set; }
        public byte FarbeBlau { get; set; }
        public string FarbeBeschreibung { get; set; }

        public Farbe(byte farbeNr, byte farbeRot, byte farbeGruen, byte farbeBlau, string farbeBeschreibung)
        {
            FarbeNr = farbeNr;
            FarbeRot = farbeRot;
            FarbeGruen = farbeGruen;
            FarbeBlau = farbeBlau;
            FarbeBeschreibung = farbeBeschreibung;
        }
    }

Zitat
- Farben lesen
- Farbe für Farbe in die ListView eintragen


        Farbe[] Farben;
        private void ButtonRGBLesen_Click(object sender, EventArgs e)
        {
            if (File.Exists(TextBoxPath.Text + TextBoxRGB.Text))
            {
                string jsonString = File.ReadAllText(TextBoxPath.Text + TextBoxRGB.Text);
                Farben = JsonSerializer.Deserialize<Farbe[]>(jsonString);
                for (int loop = 0; loop < Farben.Length; loop++)
                {
                    ListViewItem FarbeNr = ListViewRGB.Items.Add(Convert.ToString(Farben[loop].FarbeNr));
                    FarbeNr.SubItems.Add(Convert.ToString(Farben[loop].FarbeRot));
                    FarbeNr.SubItems.Add(Convert.ToString(Farben[loop].FarbeGruen));
                    FarbeNr.SubItems.Add(Convert.ToString(Farben[loop].FarbeBlau));
                    FarbeNr.SubItems.Add(Farben[loop].FarbeBeschreibung);
                }
            }
            else
            {
                MessageBox.Show(TextBoxPath.Text + TextBoxRGB.Text + " nicht gefunden");
            }
        }

Zitat
- ListView Elemente nehmen, durch Items.Count weißt Du wie viele Elemente in der Liste sind und kannst mit dieser Info das Array initialisieren
Im Eventhandler mache ich dann folgendes:


           Farbe[] Farben = new Farbe[ListViewRGB.Items.Count];
Ich meine, dass ich dadurch ein lokales Array mit einer festen Größe definiert habe.
Und dann habe ich ein Problem:
Zitat
- Jeden Eintrag in Farbe übertragen
Wie kann ich einen Eintrag der in die Klasse Farbe übertragen? Wenn ich


Farben[loop].FarbeNr = Convert.ToByte(ListViewRGB.Items[loop].Text);
versuche, bekomme ich die Exception
System.NullReferenceException: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Ich dachte, Farben sei die Instanz?

Thema: Serialisierung von ListView
Am im Forum: Grundlagen von C#

Ja, alles ok und akzeptiert. Aber ich bin damit leider nicht weiter.
Nochmal: ich habe ein ListView, in das ich (wie auch immer) 4 Farben eingetragen habe mit jeweils Nr, R-Wert, G-Wert, B-Wert, Beschreibung. Diese Daten habe (wie auch immer) als Json in eine Datei geschrieben. Nun fülle ich eine 5. Farbe in mein ListView und will alles nochmal als Json in der Datei haben.
Was muss ich tun? Wie muss mein Konzept für die Datenspeicherung aussehen?

Thema: Serialisierung von ListView
Am im Forum: Grundlagen von C#

Und ich dachte, dass hinter dem UI-Element ListView eine solche Liste steckt, die man nur richtig ansprechen muss.
Also muss ich jetzt statt meines Arrays eine Liste erzeugen, und die Daten vom UI-Element dort speichern.

Thema: Serialisierung von ListView
Am im Forum: Grundlagen von C#

Ich hatte es so gemacht, wie du gesagt hast, aber:
Mehrdimensionale Arrays können während Runtime nicht vergrößert werden.


                string jsonString = File.ReadAllText(TextBoxPath.Text + TextBoxRGB.Text);
                Farben = JsonSerializer.Deserialize<Farbe[]>(jsonString);
                for (int loop = 0; loop < Farben.Length; loop++)
                {
                    ListViewItem FarbeNr = ListViewRGB.Items.Add(Convert.ToString(Farben[loop].FarbeNr));
                    FarbeNr.SubItems.Add(Convert.ToString(Farben[loop].FarbeRot));
                    FarbeNr.SubItems.Add(Convert.ToString(Farben[loop].FarbeGruen));
                    FarbeNr.SubItems.Add(Convert.ToString(Farben[loop].FarbeBlau));
                    FarbeNr.SubItems.Add(Farben[loop].FarbeBeschreibung);
                }

Wenn der User eine neue Zeile im ListView erzeugt (also z.B. eine neue Farbe gelb einfügt), kann ich das nicht mehr in Farben kopieren, bzw. Farben nicht mehr erweitern. Also brauche ich etwas anderes. Letztendlich stellt sich die Frage, wie ich dieses User-Verhalten abbilden kann?

Thema: Serialisierung von ListView
Am im Forum: Grundlagen von C#

Aber es muss doch eine Datenklasse hinter ListView stecken - ich denke, dass es eine List ist. Aber wie hießt die und wie greife ich darauf zu?

Thema: Serialisierung von ListView
Am im Forum: Grundlagen von C#

Hallo allerseits,

ich möchte ein ListView deserialisieren und auch wieder serialisieren. Bisher fällt mir nichts anderes ein, als die Items und Subitems in einer Laufschleife zu durchlaufen und die Deserialisierung nach Json durch eigenen Code durchzuführen. Es gibt die Methode ListViewItem.Deserialize(SerializationInfo, StreamingContext), aber damit komme ich irgendwie nicht klar.
Ein passendes Beispiel habe ich auch nicht gefunden.
Kann mir jemand helfen?

Thema: Gültigkeit von array
Am im Forum: Grundlagen von C#

Danke, das war's schon. Hätte ich eigentlich selbst drauf kommen müssen...

Thema: Gültigkeit von array
Am im Forum: Grundlagen von C#

Hallo allerseits,
ich glaube, ich verstehe die Basics nicht.


            if (File.Exists(Globals.DateiPfad + "Ledsteuerung_Settings.txt"))
            {
                string jsonString = File.ReadAllText(Globals.DateiPfad + "Ledsteuerung_Settings.txt");
                Presetting[] Presettings = JsonSerializer.Deserialize<Presetting[]>(jsonString);
                ListBoxProfil.Items.Clear();
                for (int loop = 0; loop < Presettings.Length; loop++)
                {
                    ListBoxProfil.Items.Add(Presettings[loop].ProfilName);
                    if (Presettings[loop].LastOne == 1)
                    {
                        TextBoxPath.Text = Presettings[loop].Pfad;
                        TextBoxRGB.Text = Presettings[loop].RGBDatei;
                        TextBoxEvent.Text = Presettings[loop].EventDatei;
                        TextBoxTiming.Text = Presettings[loop].TimingDatei;
                        UpDownMaxRGB.Value = Presettings[loop].RGBMaxHell;
                        UpDownAnzLed.Value = Presettings[loop].AnzLed;
                        UpDownAnzRelais.Value = Presettings[loop].AnzRelais;
                        UpDownTimeLapse.Value = Presettings[loop].Zeitraffer;
                        ListBoxProfil.SelectedIndex = loop;
                    }
                }
                MessageBox.Show("in if: " + Presettings[0].RGBDatei);

            }
            MessageBox.Show(Presettings[0].RGBDatei);

(um Globals und Pfadkombination kümmere ich mich später)
Presettings[0] wird duch den Deserialisierer gefüllt. In der if-Anweisung funktioniert die MessageBox. Sobald ich aus dem if raus bin, ist Presetting = null.
Das ist sicherlich richtig, aber ich verstehe das nicht.
Hilfe!
Halt, stop - ich hab's: wenn die if-Bedingung nicht erfüllt ist, muss Presettings = null sein, da ja nix gefüllt wird.

Jetzt habe ich einen else-Zweig erstellt, aber trotzdem ist Presettings = null:


            else
            {
                Presettings = new Presetting[]
                 {
                    new Presetting(@"C:\users\kstan\source\LED\", "rgbDummy.txt", "eventDummy.txt", "timingDummy.txt", 255, 40, 8, 60, "DummyProfil", 1)
                 };
            }
            MessageBox.Show(Presettings[0].RGBDatei);

Thema: Exception bei Json Deserialisierung
Am im Forum: Grundlagen von C#

Hallo allerseits,
Ich habe eine Json Deserialisierung


string jsonString = File.ReadAllText(Globals.DateiPfad + "Ledsteuerung_Settings.txt");
Presetting[] Presettings = JsonSerializer.Deserialize<Presetting[]>(jsonString);

Der Json-String scheint sauber zu sein:

[
  {
    "SetPfad": "C:\\users\\kstan\\source\\LED\\",
    "SetRGBDatei": "rgb.txt",
    "SetEventDatei": "xevent.txt",
    "SetTimingDatei": "timing.txt",
    "SetRGBMaxHell": 255,
    "SetAnzLed": 40,
    "SetAnzRelais": 8,
    "SetZeitraffer": 60,
    "SetProfilName": "TestProfil",
    "SetLastOne": 1
  }
]
Die Presetting-Klasse habe ich mehrfach überprüft, aber bisher nichts auffälliges gefunden:


    [Serializable]
    public class Presetting
    {
        private string Pfad;
        private string RGBDatei;
        private string EventDatei;
        private string TimingDatei;
        private byte RGBMaxHell;
        private byte AnzLed;
        private byte AnzRelais;
        private int Zeitraffer;
        private string ProfilName;
        private byte LastOne;

        public Presetting(string pfad, string rgbDatei, string eventdatei, string timingdatei, 
            byte rgbMaxHell, byte anzLed, byte anzRelais, int zeitraffer, string profilName, byte lastOne)
        {
            Pfad = pfad;
            RGBDatei = rgbDatei;
            EventDatei = eventdatei;
            TimingDatei = timingdatei;
            RGBMaxHell = rgbMaxHell;
            AnzLed = anzLed;
            AnzRelais = anzRelais;
            Zeitraffer = zeitraffer;
            ProfilName = profilName;
            LastOne = lastOne;
        }

        public string SetPfad
        {
            get { return Pfad; }
            set { Pfad = value; }
        }
        public string SetRGBDatei
        {
            get { return RGBDatei; }
            set { RGBDatei = value; }
        }
        public string SetEventDatei
        {
            get { return EventDatei; }
            set { EventDatei = value; }
        }
        public string SetTimingDatei
        {
            get { return TimingDatei; }
            set { TimingDatei = value; }
        }
        public byte SetRGBMaxHell
        {
            get { return RGBMaxHell; }
            set { RGBMaxHell = value; }
        }
        public byte SetAnzLed
        {
            get { return AnzLed; }
            set { AnzLed = value; }
        }
        public byte SetAnzRelais
        {
            get { return AnzRelais; }
            set { AnzRelais = value; }
        }
        public int SetZeitraffer
        {
            get { return Zeitraffer; }
            set { Zeitraffer = value; }
        }
        public string SetProfilName
        {
            get { return ProfilName; }
            set { ProfilName = value; }
        }
        public byte SetLastOne
        {
            get { return LastOne; }
            set { LastOne = value; }
        }
    }

Die Instanziierung scheint auch ok:


        Presetting[] Presettings;

Visual Studio schlägt mir vor


string jsonString = File.ReadAllText(Globals.DateiPfad + "Ledsteuerung_Settings.txt");
_ = JsonSerializer.Deserialize<Presetting[]>(jsonString);
Ich kann damit nichts anfangen, aber vielleicht ist das ein Hinweis auf einen anderen Fehler.
Kann mir jemand helfen oder zumindest einen Tipp zur weiteren Fehlersuche geben?

Thema: Textbox nur für Zahlen
Am im Forum: Grundlagen von C#

Ich habe jetzt numericUpDown gewählt. Damit ist das Problem nicht existent und es ist auch einfacher zu handhaben.

Thema: Klasse in Datei schreiben und lesen
Am im Forum: Grundlagen von C#

So, es funktioniert mit Json. Hier der Code mit ein paar Testdaten.


       private void ButtonRGBLesen_Click(object sender, EventArgs e)
        {
            string jsonString = File.ReadAllText(Globals.fileNameRGB);
            Farbe[] Farben = JsonSerializer.Deserialize<Farbe[]>(jsonString);
            MessageBox.Show(Globals.fileNameRGB + " gelesen");

            MessageBox.Show(Farben[0].Beschreibung);
            MessageBox.Show(Farben[1].Beschreibung);
            MessageBox.Show(Farben[2].Beschreibung);
            MessageBox.Show(Farben[3].Beschreibung);
        }

        private void ButtonRGBSpeichern_Click(object sender, EventArgs e)
        {
            Farben = new Farbe[]
            {
                new Farbe (0, 255, 255, 255, "weiß"),
                new Farbe (1, 255, 0, 0, "rot"),
                new Farbe (2, 0, 255, 0, "grün"),
                new Farbe (3, 0, 0, 255, "blau")
            };
            string jsonString = JsonSerializer.Serialize(Farben);
            File.WriteAllText(Globals.fileNameRGB, jsonString);
            MessageBox.Show("Farben in " + Globals.fileNameRGB + " gespeichert");
        }

Ist das so ok? Oder habe ich wichtige Dinge nicht berücksichtigt?

Thema: Klasse in Datei schreiben und lesen
Am im Forum: Grundlagen von C#

Jetzt probiere ich Json und laufe prompt auf einen Fehler:


using System.Text.Json;
Json ist im Namespace von System.Text nicht vorhanden. Wie muss ich denn das vereinbaren?

Thema: Klasse in Datei schreiben und lesen
Am im Forum: Grundlagen von C#

ok, ich werde den BinaryFormatter nicht benutzen. Aber was ist dann die nächste (naheliegende) Variante? Was wird von Euch empfohlen?

Thema: Klasse in Datei schreiben und lesen
Am im Forum: Grundlagen von C#

Das habe ich gelesen. Meine Anwendung ist aber für den Privatgebrauch und beinhaltet zudem keine sensible Daten. Daher denke ich, dass BinaryFormatter für meine Anwendung ok ist.

Thema: Klasse in Datei schreiben und lesen
Am im Forum: Grundlagen von C#

Danke für den Hinweis. Ich habe das jetzt mit BinaryFormatter gelöst.

Thema: Klasse in Datei schreiben und lesen
Am im Forum: Grundlagen von C#

Hallo allerseits,

gibt es in C# etwas, um Klassen in eine Datei zu schreiben? Ich habe eine Klasse mit Daten (Strings, Bytes, Integers schön gemischt) und möchte diese speichern und dann auch wieder lesen. Irgendwie habe ich bisher noch nichts passendes gefunden.
Kann mir jemand helfen?

Thema: Textbox nur für Zahlen
Am im Forum: Grundlagen von C#

numericUpDown war mir wohl bekannt, aber ich wollte die Auf- und Ab-Pfeile nicht.
Andererseits ist es besser, eine einfache (= NumericUpDown) Lösung zu nehmen.

Thema: Textbox nur für Zahlen
Am im Forum: Grundlagen von C#

Hallo allerseits,
ich brauche eine Textbox, die ausschließlich Zahlen akzeptiert. Dazu habe ich mal rumgegoogled und mehr oder weniger komplizierte Lösungen gefunden. Letztendlich habe ich aber folgendes gemacht:


        private void TextBoxMaxLED_TextChanged(object sender, EventArgs e)
        {
            try
            {
                Globals.AnzahlLed = Convert.ToByte(TextBoxMaxLED.Text);
            }
            catch
            {
                TextBoxMaxLED.Text = "1";
                Globals.AnzahlLed = 1;
            }
        }

Dabei ist in meinem Fall Globals.AnzahlLed als byte definiert.
Wenn nun die Zuweisung im Event-Handler auf eine Exception läuft (bei byte wäre das alle Zeichen, die nicht Zahl sind, sowie Zahlen kleiner 0 oder größer 255) setze ich meine Textbox auf den Wert 1 (könnte auch 0 oder sonst etwas setzen). Ich denke, das ist eine einfache Lösung.
Was meint ihr? Gibt es bei meiner Lösung Dinge, die ich nicht berücksichtigt habe? Kann da etwas schief gehen?

Thema: Button in Form ansprechen
Am im Forum: Grundlagen von C#

Ziel ist eine Anwendung zur Programmierung einer Beleuchtung für eine Modelleisenbahn. Die Anwendung hat eine Form mit 4 Registerkarten. Auf einer werden die Randbedingungen behandelt; die anderen beinhalten Farben, Ereignisse und Zeitpunkte. Eine Farbe kann bei mehreren Ereignissen auftreten, mehrere Ereignisse können zum gleichen Zeitpunkt auftreten. Die Registerkarten sind ähnlich aufgebaut: Zentrales Element ist jeweils ein ListView zur Darstellung und Änderung der Daten. Es sind jeweils Buttons vorhanden Daten lesen, Daten speichern, Daten hinzufügen, Daten löschen. Die Daten sind aber jeweils unterschiedlich strukturiert.
Wenn ich die UI-Elemente alle in die Form packe, dann müssten ja die Event-Händler auch dort sein. Daten speichern und lesen ist leider immer unterschiedlich, so dass ich dort auch keine Zusammenfassung sehe.
Hast du eine Idee, die mir weiter hilft?

Thema: Button in Form ansprechen
Am im Forum: Grundlagen von C#

Hallo allerseits,
ich möchte einen Button aus einer Form ansprechen. Aktuell geschieht das so:
in der Form rufe ich eine Instanz einer Klasse auf:


    public partial class LEDControl : Form
    {
        ClassRGB DataRGB;

        public LEDControl()
        {
            InitializeComponent();
            DataRGB = new ClassRGB(ButtonRGBLesen);
       }

In dieser Klasse ist dann der Event-Handler:


    internal class ClassRGB
    {
        private Button ButtonLesenRGB;

        public ClassRGB(object _ButtonLesenRGB)
        {
            ButtonLesenRGB = (Button)_ButtonLesenRGB;

        }

        private void ButtonLesenRGB_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Button geklickt");

        }

Das funktioniert auch richtig. Ich möchte nun nicht alle Teile der Form in der Aufruf der Klasse (Instanziierung) bringen. Gibt es andere Möglichkeiten, den Button anzusprechen?

Thema: HitTest in ListView ergibt falsche Position
Am im Forum: Grundlagen von C#

Es funktioniert jetzt und ist nicht mehr abhängig von der Position der ListView. Allerdings muss ich immer noch eine Positions-Korrektur machen.


           _tbEdit.Top = _lvSubItemEdit.Bounds.Top + 2;
           _tbEdit.Left = _lvSubItemEdit.Bounds.Left + 6;

Die könnte noch von irgendwelchen Paddings und Margins herkommen.

Danke für deine Hilfe!