DataGridView Properties einer Klasse oder auch Tatentyp als Wert?

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.

    DataGridView Properties einer Klasse oder auch Tatentyp als Wert?

    Guten morgen,

    nach einer etwas längeren Nachtschicht häng ich an einer Stelle fest.
    Kann mir jemand verraten wie man nur Properties einer Klasse als Wert in einer Spalte zulässt?

    Z .B. diese Hier Also es sollen nur Farben zugelassen/gespeichert werden.
    Ich hab zwar schon im Internet gesucht, aber ich komm einfach nicht mehr hinter die Texte.

    Falls man das irgendwie angeben kann, wird das ganze auch als Color gespeichert?
    So das man den Wert direkt auslesen und zuweisen kann ohne das konvertiert werden muss?

    Warum bloß ist in Wasser kein Koffein drin :sleeping:
    Farben sind etwas lästig in einer Datatable zu speichern, denn DataGridView hat keine DatagridViewColorColumn.
    Stattdessen kannst du Int32 speichern, und zur Darstellung mit Color.FromArgb/ToArgb konvertieren.
    Auf diese Weise kann man sich sowas ähnliches basteln wie eine DatagridViewColorColumn - gugge coloriertes DatagridView oder noch ein coloriertes Datagridview
    Diese Colors sind statische Konstanten, sie sind ohne Instanziierung abrufbar.

    VB.NET-Quellcode

    1. Public Class MyColor
    2. Public Const Red As Integer = 1234
    3. Public Const Green As Integer = 4321
    4. End Class

    VB.NET-Quellcode

    1. Private Sub xxx()
    2. Dim ii As Integer = MyColor.Red
    3. End Sub
    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!
    Mh ich bin mir gerade garnicht mehr sicher ob ich auf dem richtigen Weg bin.
    Deswegen nochmal, kann ich die Datentypen der einzelnen Spalten auf einen beliebigen Datentyp festlegen, ohne das man ewig drum rum schreiben muss?
    (Denn HIER steht ja, das DataType auf diese paar Typen begrenzt ist)




    Dabei geht es mir nicht darum eine DB zu erstellen, sondern es geht nur darum, übersichtlich eine Liste mit diesen Eigenschaften eines Objekts zu erstellen.
    Eine Spalte repräsentiert dann alle Eigenschaften eines Objektes.
    Dann mach doch einfach mit ToString einen lesbaren Text draus.
    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!
    @Eistee: darfe ich fragen warum willst du die Farben speichern ?
    TIPP: Du kannst eine Funktion/Sub schreiben die deine DGV durchläuft uberprüft oder vergleicht bestimmte werte/wörter und spalte/zeile dann farbig vorhebt. Der Vorgang wird bei Anwendungstart ein mal durchgeführt, du kannst auch manuell die aktion durchführen lassen.
    @RodFromGermany: Aus was soll ich einen lesbaren Text machen?

    @SystemUnknow: Ich möchte nichts einfärben. Ich wollte nur die Farbe als Farbe speichern.

    Denn das ganze soll später an einen Konstruktor weitergegeben werden, der mir dann so viele Objekte erstellt wie sie als Zeilen im DGV zu finden sind.
    Es soll also eine Art Objekt-Editor für den Endbenutzer werden.

    Eistee schrieb:

    Aus was soll ich einen lesbaren Text machen?

    Aus dem Wert Deiner Property, z.B. ist &hFF0000 äqiovalent zu Colors.Red.
    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!

    SystemUnknow schrieb:

    wenn dann HEX Wert speichern

    Das ist auch nur eine String-Räpresentation einer Zahl.
    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!
    Heute ist wieder ein Tag an dem ich einfach nichts verstehe X(
    Kann mir jemand sagen ob ich mithilfe dieses Beispiels (MSDN), die Eingabe nicht doch sofort als Color gespeichert wird?

    Falls ihr das so oder so ähnlich die ganze Zeit meintet, verzeit mir, ich bin heute extremst neben der Spur :whistling:
    Nur leider muss der Mist irgendwann fertig werden ^^
    ou - mann!
    Das ist ja malwieder ein Msdn-Beispiel - du lieberGott!

    Frage: was verstehst du unter "speichern"?
    Im Msdn-Beispiel wird richtig der Datentyp auf Color festgelegt, und wird auch als Color verarbeitet.
    Aber speichern im Sinne von auf Platte schreiben können die das nicht.

    So, jetzt lies bitte nochmal post#3. Da steht, wie du Farben laden und speichern und verarbeiten kannst. Nämlich als Integer, und zur Anzeige musstehalt immer eine Zeile drumrumschreiben.

    Es geht auch ganz nativ: Hier - ZeichenObjekte im Dataset - habe ich ein eigenes Datenformat verzapft, welches wesentlich mehr Datentypen laden/speichern kann als Dataset.WriteXml oder Datenbank-Zugriffe.
    Der Code ist aber entsprechend aufwändig, und lohnt sich nur, wenn man sowas öfter zu verwenden gedenkt.
    @ErfinderDesRades: Vielen dank! Jetzt hat es sich geklärt.

    Das was ich geschrieben habe "Ich wollte nur die Farbe als Farbe speichern" war totaler Mist!
    Was ich gemint habe war eig. nur Die Zellen solange das Programm läuft mit dem Datentyp zu füllen.
    Es sollte nie etwas gespeichert werde.

    Man sollte die Zeilen nach belieben mit den richtigen Datentypen ausfüllen.
    Dannach einen Button drücken welcher nun anweist, Zeilenweise die Zellen auszulesen und pro Zeile ein Objekt zu erstellen.
    Wobei die ausgelesenen Zellen als Parameter im Konstrucktor verwendet werden sollen.

    Richtig gespeichert werden, sollte nie etwas.
    Ich hab mich einfach extrem schlecht ausgedrückt.
    Sry dafür & MfG Eistee

    PS @ErfinderDesRades: Es ist echt beeindruckend wie gut Du dich mit DB und der Modelierung etc. auskennst.

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

    Eistee schrieb:

    Was ich gemint habe war eig. nur Die Zellen solange das Programm mit dem Datentyp zu füllen.

    ich versteh nur nicht den Sinn vons das.
    Weil ein DGV ist ja zum Daten anzeigen da. Aber eine DGV-Zelle kann eine Color nicht vernünftig anzeigen.
    Weil es keine DatagridViewColorColumn gibt, wird einfach eine DatagridViewTextboxColumn genommen. Also wozu eine Color in eine DGV-Zelle stopfen, wenn diese dann nur "[System.Drawing.Color]" anzeigt?
    Ah - vlt. verwendest du nur benannte Colors, bei denen würde der Name angezeigt.
    Ist das so?
    Akzeptiert DatagridView es dann auch, wenn man zB. "Red" in eine solche TextboxCell reinschreibt?