Hallo,
ich habe vereinfacht folgendes vor. Ich möchte auf ein Control-Element per Maus-Klick markiert erscheinen lassen (z.B. ein Button). Damit ich z.B. zwei Controls markieren kann und dann daraus eine Gruppe bilden kann (so wie z.B. in Word etc.). Also z.B. ein Rahmen herum erscheint.
Ist es schon mal richtig, dass ich dies nur über gdi erreiche? Ich weiß nicht so wirklich, wie hier die vorgehensweise ist. Muss ich eine eigene Control-Klasse schreiben?
Wäre cool, wenn mir jemand grob das Vorgehen erklären könnte. Vielleicht hat jemand auch schonmal sowas gemacht. In der Suche habe ich nicht so wirklich was gefunden.
Gruß
da du den rahmen um beide buttons ziehen möchtest (also ein rahmen für beide) musst du wohl oder übel ein eigenes control schreiben ,das dir diese funktionalität bietet.
nähere infos findest du hier:
[FAQ] Eigenen Event definieren / Information zu Events
[FAQ] Control-Programmierung, (Border, Position, Size, Ownerdraw, Paint)
[Artikel] Benutzen von UserControls / abgeleiteten Controls im Designer von Visual Studio 2
[Tutorial] Gezeichnete Objekte mit der Maus verschieben
[Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox)
[Artikel] Flackernde Controls und flackerndes Zeichnen vermeiden
das sollte erstmal als input reichen und einige deiner fragen von selbst beantworten. wenn du nach dem durcharbeiten immernoch fragen offen hast, dann kannst du sie gerne stellen.
so, jetzt hab ich endlich zeit zum antworten.
erstmal vielen dank für die ausgiebige hilfe. ich werd mich mal reinhengen und dann versuchen etwas hinzubekommen. die lösung werde ich dann entsprechend präsentieren.
vielen dank
ich bekomme meine verschiedenen controls dynamisch und möchte diese ja dann mit der eigenschaft "markierbar" versehen. wie stell ich denn das am besten an? ich kann ja keine eigene klasse schreiben und das control-element über den konstruktor übergeben oder wie? kommt mir zumindest unelegant vor.
wenn du nicht herr über die controls bist, hast du auch keine chance. wenn das control nicht von sich aus nicht möchte oder die funktionalität nicht bereitstellt, das es markierbar ist, dann kann man es auch nciht dazu zwingen (ok man könnte aber das ist verfluchtes gefrickel und nicht gerade perfomant).
also mein workaround sieht folgendermaßen aus.
Auswahl der Elemente:
1.ich werde ein rubber-band-Rechteck implementieren, um Controls zu markieren
rubber-band-rechteck
über die Methode ControlPaint.DrawReversibleFrame(...)
analog wird dies auch per Mausklick möglich sein.