Laden...

Controls markiert darstellen

Erstellt von itstata vor 15 Jahren Letzter Beitrag vor 15 Jahren 799 Views
I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 15 Jahren
Controls markiert darstellen

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ß

Gelöschter Account
vor 15 Jahren

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.

I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 15 Jahren

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

I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 15 Jahren

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.

Gelöschter Account
vor 15 Jahren

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).

I
itstata Themenstarter:in
302 Beiträge seit 2008
vor 15 Jahren

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.

  1. sämtliche Controls, die innerhalb des aufgezogenen Rechtecks liegen werde ich in einer separaten Liste festhalten und so ermitteln, welche selektiert sind und welche nicht.