Ich versuche mich zur Zeit an eigenen User-Controls. Für ein größeres Projekt bräuchte ich eine Textbox mit runden Ecken (ungefähr so wie von Mac OSX [ich weis, da gibts schon was hier im Forum, allerdings funktioniert das bei mir nicht]). Hier führ hab ich mir erstmal ein UserControl-Element erstellt und eine TextBox mit Border-Style "null" hinzugefügt und ein wenig herumgespielt. Leider gibt es im Internet und auch hier im Forum so gut wie gar keine Anleitungen wie man denn sowas macht, meistens nur schon fertige Controls.
TextBox mit runden Ecken
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von this.Update().
-
-
-
Ungefähr so? dead link/404 an dieser Stelle entfernt ~VaporiZed
Ich könnte Dir auch gerne meine Controls zu Verfügung stellen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()
-
Hi,
vielen Dank für die schnelle Hilfe.
@Gonger96:
Jop, ist mir klar. Im OnPaint-Event hab ich schon ein bisschen rumgespielt, nur leider ändert sich die Border der TextBox nicht. Muss ich da eine neue Region erstellen?
@Seruz
Das sieht ja mal richtig genial aus! Aber ich würd gern was eigenes machen
Über jede Art von Anleitung würde ich mich sehr freuen! -
-
-
-
Hier der Downloadlink + die ganzen Codes:
dead link/404 an dieser Stelle entfernt ~VaporiZed
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()
-
Du könntest natürlich auch mit TextBox.Region rumspielen hier ein kleines Beispiel :
VB.NET-Quellcode
- Public Class Form1
- Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- abrunden(1, 1, TextBox1.Width - 2, TextBox1.Height - 2, 10, TextBox1)
- End Sub
- Sub abrunden(ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal radius As Integer, ByVal textbox As TextBox)
- Dim gp As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath()
- gp.AddLine(x + radius, y, x + width - radius, y)
- gp.AddArc(x + width - radius, y, radius, radius, 270, 90)
- gp.AddLine(x + width, y + radius, x + width, y + height - radius)
- gp.AddArc(x + width - radius, y + height - radius, radius, radius, 0, 90)
- gp.AddLine(x + width - radius, y + height, x + radius, y + height)
- gp.AddArc(x, y + height - radius, radius, radius, 90, 90)
- gp.AddLine(x, y + height - radius, x, y + radius)
- gp.AddArc(x, y, radius, radius, 180, 90)
- gp.CloseFigure()
- textbox.Region = New System.Drawing.Region(gp)
- gp.Dispose()
- End Sub
- End Class
ist auf jeden fall ganz schön anzusehen und du brauchst kein extra controlMFG 0x426c61636b4e6574776f726b426974
InOffical VB-Paradise IRC-Server
webchat.freenode.net/
Channel : ##vbparadiseDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BlackNetworkBit“ ()
-
-
Beim Erstellen eines eigenen Controls kann man ja auch von TextBox erben und dann im Paint-Event bzw. der OnPaint-Methode, das zeichnen. Und das OnPaint ist kein Event
Oder ich sag es mal wieder: WPF verwenden. Windows Forms ist afaik über 15 Jahre alt. Da ist Windows Presentation Foundation einfach eine neue Technologie, mit der sowas sehr einfach machbar ist, da es alles nötige mitliefert und für dynamische Layouts kreiert wurde.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
Du kannst per Region eine Maske erstellen also wenn das dir nicht gefällt dann mache dir doch einfach eine eigene MaskeMFG 0x426c61636b4e6574776f726b426974
InOffical VB-Paradise IRC-Server
webchat.freenode.net/
Channel : ##vbparadise -
-
Wieso sollte man das? Man mischt WinForms nicht mit WPF. Wenn du schon WPF verwenden würdest, dann natürlich für alles.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
-
Hm ok. Das käme jetzt drauf an, wie weit du schon bist und ob sich das noch lohnt. Na dann mach es dieses mal über GDI+, aber überleg es dir mal mit WPF anzufangen
Das mit den Regions kannst du doch mal versuchen, oder schau dir mal ein wenig DrawArc usw an.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
Dafür ist WPF überflüssig. Für eine blöde Textbox muss man nicht das ganze Programm mit WPF rendern. Ich find sowas sowieso unnötig da es Nutzer überhaupt nicht interressiert. Naja du nimmst dir eine Klasse, erbst von Textbox. Danach kannst du die Flags UserPaint setzen per Setstyle()-Methode glaub ich und alles im Paint Event oder OnPaint malen. So kannst du einfach per GDI+ deine abgerundeteten Ecken malen.
Was Regions angeht, die sind immer schrecklich verpixelt. Sowas sieht ziemlich unschön aus -
#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
-
-
Ähnliche Themen
-
Daniel Baumert - - Sonstige Problemstellungen
-
5 Benutzer haben hier geschrieben
- Gast (8)
- Trade (4)
- Gonger96 (4)
- meikel__ (3)
- BlackNetworkBit (2)