Zum Inhalt springen

vb.net Komponenten selbst erstellen


Nias

Empfohlene Beiträge

Hallo,

kurze Frage; wie kann ich eigene Komponenten herstellen. Ich denke dabei an so etwas wie die Dialogs oder Timerkomponente, die man aus der Toolbox in den Designer zieht und UNTEN in einer zusätzlich erscheinenden Leiste auftauchen.

Hintergrund ist, dass ich mir ein eigenes Infofenster zusammenbastel', dass ich überall und jederzeit einbinden kann und den Rest von selbst erledigt.

Bin für Antworten sehr dankbar, vielleicht suche ich aber auch einfach unter dem falschen Begriff... -.-

Link zu diesem Kommentar
Auf anderen Seiten teilen

In .NET ist das recht einfach, wenn du beispielsweise einfach ein vorhandenes Control erweitern oder anpassen möchtest.

Dazu erstellst du dir eine Klasse "bla", welche von dem entsprechenden Control erbt.

Bsp:

(hier wird ein dateTimePicker mit einem DoubleClick - Event ausgestattet):

Public Class clsDTPExtended

Inherits DateTimePicker

Private m_LastClickPosition As Point

Private m_LastClickTime As Long

Private m_LastClickRaisedDoubleClick As Boolean

Public Shadows Event DoubleClick( _

ByVal sender As Object, _

ByVal e As EventArgs _

)

Protected Overrides Sub OnDoubleClick(ByVal e As EventArgs)

RaiseEvent DoubleClick(Me, e)

End Sub

Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)

If e.Button = MouseButtons.Left Then

If _

Not m_LastClickRaisedDoubleClick AndAlso _

Now.Ticks - m_LastClickTime <= _

SystemInformation.DoubleClickTime * 10000 AndAlso _

IsInDoubleClickArea(m_LastClickPosition, Cursor.Position) _

Then

OnDoubleClick(EventArgs.Empty)

m_LastClickRaisedDoubleClick = True

Else

m_LastClickRaisedDoubleClick = False

End If

m_LastClickPosition = Cursor.Position

m_LastClickTime = Now.Ticks

End If

MyBase.OnMouseDown(e)

End Sub

Private Function IsInDoubleClickArea( _

ByVal Point1 As Point, _

ByVal Point2 As Point _

) As Boolean

Return _

Math.Abs(Point1.X - Point2.X) <= SystemInformation.DoubleClickSize.Width AndAlso _

Math.Abs(Point1.Y - Point2.Y) <= SystemInformation.DoubleClickSize.Height

End Function

End Class

Im Form kannste dann ganz normal über "New" das Control erzeugen bzw. du ziehst dir dann ein DTP auf das Formular und passt in der Designerdatei die Klasse des Objekts an.

Wenn du komplett ein eigenes Control erstellen willst, dann schau dir mal folgendes Tutorial an:

Creating Custom .NET Controls with C# | O'Reilly Media

So long,

wos

Link zu diesem Kommentar
Auf anderen Seiten teilen

also kurz gesagt, musst du nur im control, wo du ein neues control adden willst control.add(neues control) machen...

vom neuen control kannst du dann auch den dockstyle, die coordinaten usw setzen

das einfachste ist mal, du guggst in die region "Windows Form Designer generated code"

so, wie hier der code automatisch generiert wird, wenn du ein label zeichnest, machst du das dann auch

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 4 Wochen später...

Sorry, ich war in der letzten Zeit ein wenig zu beschäftigt...

Erstmal danke für die Antworten, aber (ja leider),

ich möchte keine Komponenten gestalten, die ausschließlich für WinForms gedacht sind und man sich auf die Form ziehen kann, das ist nicht das Problem.

Es gibt da aber diese Dialoge und ähnliche andere "Dinge" (wie gesagt, vermutlich benutze ich den falschen Begriff), die man sich auch in den Designer zieht und seperat eingezeigt werden. Ein ColorDialog wird ja auch nicht in seiner ganzen Pracht im Designer angezeigt, sondern nur durch ein stellvertretendes Icon in einer seperaten Leiste. Wie man sowas anstellt, interessiert mich.

Andernfalls muss ich wohl dahergehen und die um IDE ein eigenes ProjektItemTemplate erweitern...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich hab zwar grad keine Zeit dir nen Beispiel zu geben, aber nen Tip für die nächsten Schreiber hätte ich trotzdem...

Ihr werft hier grad fleißig "Controls" und "Components" aus den Namespaces "System.Windows.Forms" und "System.ComponentModel" in einen Topf.

Aber das mit den Komponenten, funktioniert ähnlich wie das bereits angegebene Beispiel für die Abgeleitete DateTimePicker-Klasse (für Komponenten wäre das z.B. der BackgroundWorker). Willst Du hingegen eine komplett neue Komponente erstellen muss Du diese eben von "System.ComponentModel.Component" ableiten.

Viel Erfolg noch

(und ein schönes neues Jahr)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...