| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: VB.Net: nochmal eigene Controls (3669 mal gelesen)
|
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles... i.R.

 Beiträge: 2678 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** ------------------ Zuletzt beruflich: - SWX2020 SP5; - SAP/PLM+ECTR; - DriveWorks Pro; - Programmierung: VBA, aktuell Visual Studio 2022/VB.Net ------------------ privat: ab 2024 Onshape seit 2025 SolidWorks for Makers
|
erstellt am: 31. Jul. 2008 08:44 <-- editieren / zitieren --> Unities abgeben:         
Das Erstellen von eigenen Controls ist ja eine feine Sache und klappt soweit auch ganz gut. Ich habe aber noch ein kleines Problem. Ich habe mir eigene Buttons gebaut, mit eigenen Grafiken, um von dem schnöden eintönigen Buttondesign wegzukommen. Der Einfachheit halber habe ich dazu ein Label als Grundlage genommen, dem ich eben die nötigen Eigenschaften mitgebe, in erster Linie die passende Hintergrundgrafik. Das funktioniert gut, nur mit der Größe beim Einfügen in die eigene Form habe ich noch Probleme, das Control bekommt standardmäßig immer die Einstellung "Autosize=True" und "Size = 123;19", obwohl ich in der Sub New des Controls Autosize=False und die Größe Size=142;100 gesetzt habe. Auch in der Sub onCreate funktioniert das nicht, allerdings wird der Button dann zur Laufzeit richtig dargestellt. Wie und wo muss ich das definieren, damit das Control beim Einfügen in die Formt die richtige Standardgröße bekommt? ------------------ Klaus www.al-ko.com | mein Gästebuch | privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 02. Aug. 2008 13:30 <-- editieren / zitieren --> Unities abgeben:          Nur für KMassler
Hallo Klaus, welches Control meinst du? Dein Benutzerdefiniertes oder dein Label im benutzerdefinierten Control? Im Benutzerdefinierten Control ist die Eigenschaft Autosize zu Beginn False, bei einem Label True (Damit der Text immer reinpasst). Diese Eigenschaften kannst du jedoch im Designer anpassen. Das funktioniert wie in einem Formular. Wenn du also alle Autosize Eigenschaften in deinem benutzerdefinierten Control mit allen Kinder-Controls (z.B. dein Label) auf False setzt müsste es klappen. Damit die Größe der Kinder-Controls sich dynamisch an das benutzerdefinierte Control richtet solltest du die Anchor Eigenschaft dieser Kinder-Controls anpassen, damit sie an den Seiten des benutzerdefinierten Controls gebunden sind. Ich hoffe ich habe das jetzt nicht zu umständlich erklärt. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles... i.R.

 Beiträge: 2678 Registriert: 06.11.2000
|
erstellt am: 04. Aug. 2008 08:16 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von tbd: ...Ich hoffe ich habe das jetzt nicht zu umständlich erklärt.
Nix verstehn in Athen. Also... ich habe mir eine eigene Klasse für eigene graphische Buttons erstellt, mit Labels als Grundlage (Inherits Label). Soweit ich das beurteilen kann, kommt ein Label meinem Zweck am nächsten. Ich hätte es vielleicht auch mit einer Picturebox versuchen können, die hat aber keine Texteigenschaften, d.h. diese hätte ich erst selber erfinden müssen, inkl. TextAlign etc. Die Buttons funktionieren ja auch gut- bis auf diese verflixte Eigenschaft Autosize. Die ist immer auf True, wenn ich den Button einsetze. Obwohl ich das in der Sub New des Controls auf False gesetzt habe. Wenn ich den Button in eine Form einsetze und dort dann Autosize ausschalte, bekommt der Button die richtige Größe, wie in der Sub New definiert.
Code: <ToolboxBitmap("C:\eigene Dateien-Massler\Visual Studio 2008\Controls\MyButtons\MyButtons\MyOvalButtons.ico")> _ Public Class MyOvalButton Inherits Label Sub New() Me.BackgroundImage = My.Resources.OvalButtonUp Me.AutoSize = False Me.Width = 146 Me.Height = 101 Me.Font = New Font("Arial", 12, FontStyle.Bold) Me.Text = "Button" Me.TextAlign = ContentAlignment.MiddleCenter End Sub Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs) MyBase.OnMouseEnter(e) Me.BackgroundImage = My.Resources.OvalButtonOver End Sub
Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs) MyBase.OnMouseLeave(e) Me.BackgroundImage = My.Resources.OvalButtonUp End Sub Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs) MyBase.OnMouseDown(e) Me.BackgroundImage = My.Resources.OvalButtonDown End Sub Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs) MyBase.OnMouseUp(e) Me.BackgroundImage = My.Resources.OvalButtonOver End Sub End Class
------------------ Klaus www.al-ko.com | mein Gästebuch | privat... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 04. Aug. 2008 09:26 <-- editieren / zitieren --> Unities abgeben:          Nur für KMassler
Guten Morgen Klaus, das ist mal eine andere Vorgehensweise wie meine! Ich würde mal behaupten das es daran liegt, das deine vererbte Klasse nicht gezielt initialisiert wird! Wenn du dies in deiner Sub New erledigst und darauf die Werte anpasst müsste es gehen.
Code: Public Sub New() MyBase.New() Me.AutoSize = False Me.Width = 146 Me.Height = 101 ... End Sub
Wenn es dann immer noch nicht funktioniert versuche die Labeleigenschaften einfach direkt mit Hilfe vom MyBase zu verändern. ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks Api Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles... i.R.

 Beiträge: 2678 Registriert: 06.11.2000
|
erstellt am: 04. Aug. 2008 10:09 <-- editieren / zitieren --> Unities abgeben:         
|