Transparentes Label auf Datagridview

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Peter329.

    Transparentes Label auf Datagridview

    Hi,

    auf den Forms gibt es ein Attribut TransparencyKey - da kann man eine Farbe festlegen, die als "durchscheinend interpretiert wird.

    Per Default steht da Color [Empty] drin.

    Jetzt hab ich da im Designer eine Farbe eingestellt (z.B. color.green) ... und mich dann entschlossen, die doch nicht zu verwenden. Wie bekomme ich denn jetzt im Designer den Default wieder hin ?

    Ich kann eine andere Farbe einstellen, die ich sonst nicht verwende ... aber den Zustand "empty" kriege ich nicht gebacken !

    Kann mir jemand helfen ?

    LG
    Peter
    Beim 2010-er, 2015-er und 2017-er kann man den Text markieren und rauslöschen, um eingestellte Farbwerte zu entfernen.
    Beim 2010-er muss man den Text entweder mit der Maus durch Ziehen oder durch einmaliges Reinklicken und anschließendes Ctrl+A markieren.
    Beim 2015-er wurde das Verhalten verbessert und ein Doppelklick markiert den Text (hat vorher die nächste Farbe gesetzt).
    Beim 2017-er wurde das Verhalten wieder zum Verhalten des 2010-er verschlechtert. (╯°□°)╯︵ ┻━┻


    Edit: Ach, nee, das Verhalten hängt bei allen drei davon ab, ob man eine Farbe ausgewählt hat, die einen bekannten Namen hat (z.B. "Lime"), oder eine Farbe, die keinen hat (z.B. "0; 129; 0").
    In ersterem Falle schaltet ein Doppelklick zur nächsten Farbe, in letzterem markiert ein Doppelklick den ganzen Text.
    Hatte nur gerade beim Testen zufällig diese konstellation ausgewählt.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Oder man sucht sich die Zeile aus der Form.Designer.VB raus und ändert bzw. löscht sie.
    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.
    Supi ! Danke ! Das mit der "rechten Maustaste" und dem "Reset" klappt bei mir hervorragend.

    Nun zu einem weiteren Problem:

    Ich habe eine Form .... auf der liegt eine Datagridview (das sind die grünen Kästchen) ... und darüber liegt ein Label mit dem Text "Game over !".

    Ich möchte nur den Text des Labels anzeigen aber ohne den Background des Labels. Mit anderen Worten, die Datagridview soll sichtbar bleiben.

    Ich habe lblGameOver.BackColor = Color.Transparent gesetzt. Damit wird aber die Backcolor der FORM sichtbar (die ist "blau" eingestellt) ... das Label "blickt" also durch die grüne DataGridView hindurch.

    Wie schaffe ich das denn, dass nur der Text des Labels über die Datagridview gelegt wird?

    LG
    Peter
    Bilder
    • s 2018-07-27 07-10-287.jpg

      30,79 kB, 542×561, 84 mal angesehen
    @Peter329 Nimm kein Label, sondern eine separate Form, die durchsichtig ist, mit einem Text in einem Label oder auf der Form selbst, so was wie ein ToolTip.
    Da hast Du gleich eine Overlay-Form für weitere Anwendungen.
    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!
    Ok, danke erst mal für eure Vorschläge.

    @RFG

    Jau, das kann man schon machen ... über die Basis Form lge ich eine "Label-Form" ohne Border Style, transparenter Background ... Size und Location der Label-Form müsste ich halt errechnen.

    Was mir an der Lösung nicht gefällt ... ich kann die Basis-Form nicht mehr verschieben, während die Label-Form angezeigt wird. Oder ich müsste die Position und Size der Label-Form bei Änderung der Basis Form nachberechnen. Das ist zwar machbar aber m.E. nicht ganz so elegant !

    @Bluespide

    Das mit dem "Parent" des Labels klingt mir sehr vielversprechend. Nur hab ich keinen Plan wie man das macht !

    Das Label hat keine Eigenschaft "Parent" ... ich kann das Label in der Dokumentenstruktur verschieben ... aber ich kriege das Dingens nicht in die Datagridview.

    Wie macht man das also ?

    LG
    Peter

    Peter329 schrieb:

    ich kann die Basis-Form nicht mehr verschieben, während die Label-Form angezeigt wird.
    Du musst die Form natürlich nicht Modal machen: dlg.Show(), allerdings musst Du sie dann von außen schließen: dlg.Close().
    Die Variable dlg muss dazu in der Klasse, nicht aber in der Prozedur liegen.
    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!