Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

vb.net Komponenten selbst erstellen

Empfohlene Antworten

Veröffentlicht

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

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

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

  • 4 Wochen später...
  • Autor

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

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)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.