"multifunktionaler" Button?

michback20

Grünschnabel
Hallo Leute,

ich möchte ein Element definieren, das nicht in der Toolbox enthalten ist.
Es soll ein einen Namen tragen, ein Bild enthalten und einen Rahmen haben, damit der Hintergrund eine andere Farbe haben kann. Beim anklicken soll ein Eventhandler ausgelöst werden (z.B. ein neues Fenster öffnen)
Kann ich so etwas aus Label, Picturebox, etc. gruppieren? Oder gibt es da ein Element, was alles kann?

Gruß Michael
 
Hi,

dass was du suchst heißt 'UserControl' bzw. 'Benutzersteuerelement'. Damit kann man genau das erreichen was du brauchst.
Die Werte die du dann per PropertyInspector aendert moechtest, muesstest du dann in deinem UserControl auf 'public' setzen. Dann wuerde es sich genauso verhalten wie jedes andere Control, blos mit den Werten die du veraendert haben moechtest.
 
So, habe es versucht und es ist im Prinzip genau das, was ich gesucht habe. Allerdings sollte das durch einen Anwender verschiebbar sein. Er soll so ein Objekt durch ein Buttonclick erzeugen und frei verschieben können. Das kann man so wie ich das gesehen habe nicht durch ein UsingControl, oder

Gruß Michael
 
Das Ding heisst UserControl!

Schu Dir mal die Eventhander
Code:
this.DoubleClick, this.MouseDown, this.MouseUp
und ganz wichtig this.MouseMove
in deinem UserControl an.

Zum verschieben verwendest Du:
Code:
this.Top und this.Left
Alles klar?

Gruss cosmo
 
Zuletzt bearbeitet:
Hallo,

mit this.Top und this.Left kann doch nur ich als Programmersteller die Position des UserControls während meiner Programmierung verändern und nicht nachher der Benutzer meines Programmes, oder habe ich das falsch verstanden?

Gruß Michael
 
Natuerlich kannst du es so programmieren das der User zur Laufzeit ein Control erstellt.
Du braeuchtest irgendwie sowas in der Art:
Code:
private void CreateControl()
{
  MyControl mc = new MyControl();
  mc.Location = ....;
  this.Controls.Add(mc); // das erstellte Control deiner Form hinzufuegen
}
Evtl. koenntest du deine erstellten Controls noch zu einer ArrayList hinzufuegen, damit du sie einfacher aufrufen kannst, wenn du etwas daran veraendern willst (z.B. verschieben etc.).

Und so in etwa waere der Code wenn du an einem deiner Controls was veraendern moechtest:
Code:
private void Test()
{
  MyControl temp = (MyControl)this.list[0]; // Aus der ArrayList dein Control aufrufen
  temp.Location = ...; // neue Koordinaten. 
  temp.BackColour = ....; // neue Hintergrundfarbe.
}
Ich hoffe das war das was du gemeint hast.
 
Einen Button zur Laufzeit verschieben ist doch ganz einfach:
(Ist jetzt natürlich Pseudocode.)
Code:
Button.left = Mouse.xPos + (Button.width/2)
Button.top = Mouse.yPos + (Button.height/2)
Den Code kannst du bei MouseMove einprogrammieren - sollte natürlich nur ausgeführt werden, wenn du die linke Maustaste gedrückt hältst, oder so... :)
 

Neue Beiträge

Zurück