Ik ben een redelijke asp.net developer, maar van windows forms heb ik nog niet zoveel kaas gegeten. Nu zit ik met het volgende:
Ik ben aan het experimenteren met een custom control. De basisklasse is een textbox. Ik wil dat de textbox er standaard uitziet als een label (dus geen borders, en een achtergrondkleur die gelijk is aan de form kleur).
Op de klik van de control moet de textbox eruitzien als een textbox. Als de textbox de focus verliest moet hij er weer uitzien als een label. Dat is me tot nog toe aardig gelukt. Maar nu wil ik in de control de parentform klik afvangen, zodat de control er weer uitziet als een label. (Misschien dat ik beter focus ofzo kan afvangen, maar ben nog aan het experimenteren)
Dit is mijn klasse zover:
Welnu, hoe vang ik parent events af? Ik heb het een en ander gegoogled, maar kom er nog niet uit. Mis net nog even teveel kennis van event bubbling en dat soort dingen, geloof ik..
Is er trouwens een methode om erachter te komen of de control in VS gebruikt wordt, zeg maar?
Alvast bedankt.
Ik ben aan het experimenteren met een custom control. De basisklasse is een textbox. Ik wil dat de textbox er standaard uitziet als een label (dus geen borders, en een achtergrondkleur die gelijk is aan de form kleur).
Op de klik van de control moet de textbox eruitzien als een textbox. Als de textbox de focus verliest moet hij er weer uitzien als een label. Dat is me tot nog toe aardig gelukt. Maar nu wil ik in de control de parentform klik afvangen, zodat de control er weer uitziet als een label. (Misschien dat ik beter focus ofzo kan afvangen, maar ben nog aan het experimenteren)
Dit is mijn klasse zover:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Text Imports System.Windows.Forms <Bindable(False)> _ Public Class clsTextField Inherits System.Windows.Forms.TextBox Friend WithEvents TextBox1 As System.Windows.Forms.TextBox Friend WithEvents frmParent As Form Public Sub New() MyBase.New() Me.BackColor = System.Drawing.SystemColors.Control Me.BorderStyle = Windows.Forms.BorderStyle.None frmParent = FindForm() End Sub Protected Overrides Sub OnClick(ByVal e As System.EventArgs) Me.BackColor = Drawing.Color.White Me.BorderStyle = Windows.Forms.BorderStyle.Fixed3D Me.SelectAll() MyBase.OnClick(e) End Sub Sub DoStuff(ByVal sender As Object, ByVal e As EventArgs) Handles frmParent.Click OnClickOutside() End Sub Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs) If e.KeyCode = Windows.Forms.Keys.Enter Then e.SuppressKeyPress = True OnClickOutside() MyBase.OnKeyUp(e) SendKeys.Send("{tab}") Else MyBase.OnKeyUp(e) End If End Sub Protected Sub OnClickOutside() Me.BackColor = System.Drawing.SystemColors.Control Me.BorderStyle = Windows.Forms.BorderStyle.None End Sub End Class |
Welnu, hoe vang ik parent events af? Ik heb het een en ander gegoogled, maar kom er nog niet uit. Mis net nog even teveel kennis van event bubbling en dat soort dingen, geloof ik..
Is er trouwens een methode om erachter te komen of de control in VS gebruikt wordt, zeg maar?
Alvast bedankt.