By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,426 Members | 3,338 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,426 IT Pros & Developers. It's quick & easy.

Setting a default property for user control

P: n/a
Hello,

I have a control class that inherits from System.Web.UI.WebControls.Button.
When I drag this control from the "My User Controls" tab in the toolbox onto
the form, I want it to reflect the following default properties: Height =
32px, Width = 144px.

I declare the Width property in my control as...

\\\
<DefaultValueAttribute(GetType(Unit), "144px"), _
DescriptionAttribute("The width of the Cancel button.")> _
_
Public Overrides Property Width() As Web.UI.WebControls.Unit
Get
Return Me.Width
End Get
Set(ByVal Value As Web.UI.WebControls.Unit)
Me.Width = Value
End Set
End Property
///

After building the project, the Width in the Properties pane of the IDE is
disabled and displays the text: "Exception of type
System.StackOverflowException was thrown.".

I also tried to use the following line of code, but it barked about
requiring a constant expression:
<DefaultValueAttribute(Unit.Pixel(144)), _ ...

Does anyone have any ideas? Many thanks!!

Take care,

Marty
Nov 20 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Wow, nobody answering questions today? :-)

I finally came up with a VERY simple way to make the default values show up
in the designer. (I can't believe that I couldn't find something so basic
on MSDN or Google!) Hope this helps someone having the same problem!

Marty

\\\
' Used with property attributes:
Imports System.ComponentModel
' Used with the Unit and Button types:
Imports System.Web.UI.WebControls
..
..
..
Public Class myButton
Inherits Button

' The default width should be 144 pixels:
Private _Width As Unit = Unit.Pixel(144)

<CategoryAttribute("Application"), _
Browsable(True), _
DescriptionAttribute("The width (in pixels) of the button.")> _
_
Public Overrides Property Width() As Unit
Get
Return _Width
End Get
Set(ByVal Value As Unit)
_Width = Value
Me.Width = _Width
End Set
End Property
End Class
///
"Marty McFly" <Ma***@Mc.Fly> wrote in message
news:eX**************@TK2MSFTNGP09.phx.gbl...
Hello,

I have a control class that inherits from System.Web.UI.WebControls.Button. When I drag this control from the "My User Controls" tab in the toolbox onto the form, I want it to reflect the following default properties: Height =
32px, Width = 144px.

I declare the Width property in my control as...

\\\
<DefaultValueAttribute(GetType(Unit), "144px"), _
DescriptionAttribute("The width of the Cancel button.")> _
_
Public Overrides Property Width() As Web.UI.WebControls.Unit
Get
Return Me.Width
End Get
Set(ByVal Value As Web.UI.WebControls.Unit)
Me.Width = Value
End Set
End Property
///

After building the project, the Width in the Properties pane of the IDE is
disabled and displays the text: "Exception of type
System.StackOverflowException was thrown.".

I also tried to use the following line of code, but it barked about
requiring a constant expression:
<DefaultValueAttribute(Unit.Pixel(144)), _ ...

Does anyone have any ideas? Many thanks!!

Take care,

Marty

Nov 20 '05 #2

P: n/a
You should use attributes like those bellow, applied to the class .

DefaultEvent("YouEventPropName"),DefaultProperty(" YourPropName")

<DefaultProperty("Width")> _
Public Class MyButton

'....

End Class

Ernest

"Marty McFly" <Ma***@Mc.Fly> wrote in message
news:#Q**************@TK2MSFTNGP09.phx.gbl...
Wow, nobody answering questions today? :-)

I finally came up with a VERY simple way to make the default values show up in the designer. (I can't believe that I couldn't find something so basic
on MSDN or Google!) Hope this helps someone having the same problem!

Marty

\\\
' Used with property attributes:
Imports System.ComponentModel
' Used with the Unit and Button types:
Imports System.Web.UI.WebControls
.
.
.
Public Class myButton
Inherits Button

' The default width should be 144 pixels:
Private _Width As Unit = Unit.Pixel(144)

<CategoryAttribute("Application"), _
Browsable(True), _
DescriptionAttribute("The width (in pixels) of the button.")> _
_
Public Overrides Property Width() As Unit
Get
Return _Width
End Get
Set(ByVal Value As Unit)
_Width = Value
Me.Width = _Width
End Set
End Property
End Class
///
"Marty McFly" <Ma***@Mc.Fly> wrote in message
news:eX**************@TK2MSFTNGP09.phx.gbl...
Hello,

I have a control class that inherits from

System.Web.UI.WebControls.Button.
When I drag this control from the "My User Controls" tab in the toolbox

onto
the form, I want it to reflect the following default properties: Height = 32px, Width = 144px.

I declare the Width property in my control as...

\\\
<DefaultValueAttribute(GetType(Unit), "144px"), _
DescriptionAttribute("The width of the Cancel button.")> _
_
Public Overrides Property Width() As Web.UI.WebControls.Unit
Get
Return Me.Width
End Get
Set(ByVal Value As Web.UI.WebControls.Unit)
Me.Width = Value
End Set
End Property
///

After building the project, the Width in the Properties pane of the IDE is disabled and displays the text: "Exception of type
System.StackOverflowException was thrown.".

I also tried to use the following line of code, but it barked about
requiring a constant expression:
<DefaultValueAttribute(Unit.Pixel(144)), _ ...

Does anyone have any ideas? Many thanks!!

Take care,

Marty


Nov 20 '05 #3

P: n/a
Thank you for the reply, Ernest.

Actually, I was trying to give each property a default value that shows up
in the designer when adding the control, not assign a default event/property
to the parent class. The code I eventually came up with (that works) is
listed below.

Thanks again,

Marty

'\\\
' In the "Defaults" module...
Friend Const BUTTON_HEIGHT As Int16 = 32
Friend Const BUTTON_WIDTH As Int16 = 144
Friend BUTTON_BACKCOLOR As Color = _
Color.FromArgb(212, 208, 200) ' Same as #D4D0C8.
Friend BUTTON_BACKCOLOR_ONFOCUS As Color = _
Color.FromArgb(102, 255, 255) ' Same as #66FFFF.
Friend BUTTON_BACKCOLOR_ONBLUR As _
Color = Color.FromArgb(212, 208, 200)
'///

'\\\
' The "CancelButton" class.
Imports System.Web.UI.WebControls
Imports System.ComponentModel
Imports System.Drawing

<ToolboxBitmap(GetType(Button))> _
_
Public Class CancelButton

#Region " Initialization "

Inherits System.Web.UI.WebControls.Button

Private Sub InitializeComponent()
' Initially set the overridden/shadowed properties,
' so they will appear as "default" values in the
' designer.
MyBase.Font.Size = FontUnit.XSmall
MyBase.Font.Name = "Verdana"
MyBase.Width = Unit.Pixel(BUTTON_WIDTH)
MyBase.Height = Unit.Pixel(BUTTON_HEIGHT)
End Sub

Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Init
InitializeComponent()
End Sub

#End Region

#Region " Properties "

Private _Text As String = "Cancel"
Private _Width As Unit = Unit.Pixel(BUTTON_WIDTH)
Private _Height As Unit = Unit.Pixel(BUTTON_HEIGHT)
Private _BackColor As Color = BUTTON_BACKCOLOR
Private _BackColorOnFocus As Color = _
BUTTON_BACKCOLOR_ONFOCUS
Private _BackColorOnBlur As Color = _
BUTTON_BACKCOLOR_ONBLUR

Public Shadows Property Text() As String
Get
Return _Text
End Get
Set(ByVal Value As String)
_Text = Value
MyBase.Text = Value
End Set
End Property

Public Overrides Property Width() As Unit
Get
Return _Width
End Get
Set(ByVal Value As Unit)
_Width = Value
MyBase.Width = Value
End Set
End Property

Public Overrides Property Height() As Unit
Get
Return _Height
End Get
Set(ByVal Value As Unit)
_Height = Value
MyBase.Height = Value
End Set
End Property

Public Overrides Property BackColor() As Color
Get
Return _BackColor
End Get
Set(ByVal Value As Color)
_BackColor = Value
MyBase.BackColor = _BackColor
End Set
End Property

<CategoryAttribute("Application"), _
Browsable(True), _
DescriptionAttribute("The background color " & _
"when this button has focus.")> _
_
Public Property BackColorOnFocus() As Color
Get
Return _BackColorOnFocus
End Get
Set(ByVal Value As Color)
_BackColorOnFocus = Value
End Set
End Property

<CategoryAttribute("Application"), _
Browsable(True), _
DescriptionAttribute("The background color " & _
"when this button loses focus.")> _
_
Public Property BackColorOnBlur() As Color
Get
Return _BackColorOnBlur
End Get
Set(ByVal Value As Color)
_BackColorOnBlur = Value
End Set
End Property

Public Overrides ReadOnly Property Font() As FontInfo
Get
Return MyBase.Font
End Get
End Property

#End Region

Private Sub CancelButton_Load(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

' Set the overridden/shadowed properties.
MyBase.Text = _Text
MyBase.Width = _Width
MyBase.Height = _Height
MyBase.BackColor = _BackColor

' Add cursor enhancements, converting WebControls.Color
' type to an HTML RGB color string (ex: #FFFFFF).
Attributes.Add("onfocus", "this.style.background='" & _
ColorTranslator.ToHtml(_BackColorOnFocus) & "';")
Attributes.Add("onblur", "this.style.background='" & _
ColorTranslator.ToHtml(_BackColorOnBlur) & "';")

' Add attribute to cancel the form.
Attributes.Add("onclick", _
"CancelEdit = true; myForm.submit;")

End Sub

End Class
'///
"Ernest Morariu" <er****@gesora.com> wrote in message
news:ed**************@TK2MSFTNGP09.phx.gbl...
You should use attributes like those bellow, applied to the class .

DefaultEvent("YouEventPropName"),DefaultProperty(" YourPropName")

<DefaultProperty("Width")> _
Public Class MyButton

'....

End Class

Ernest

"Marty McFly" <Ma***@Mc.Fly> wrote in message
news:#Q**************@TK2MSFTNGP09.phx.gbl...
Wow, nobody answering questions today? :-)

I finally came up with a VERY simple way to make the default values show up
in the designer. (I can't believe that I couldn't find something so basic
on MSDN or Google!) Hope this helps someone having the same problem!

Marty

\\\
' Used with property attributes:
Imports System.ComponentModel
' Used with the Unit and Button types:
Imports System.Web.UI.WebControls
.
.
.
Public Class myButton
Inherits Button

' The default width should be 144 pixels:
Private _Width As Unit = Unit.Pixel(144)

<CategoryAttribute("Application"), _
Browsable(True), _
DescriptionAttribute("The width (in pixels) of the button.")> _
_
Public Overrides Property Width() As Unit
Get
Return _Width
End Get
Set(ByVal Value As Unit)
_Width = Value
Me.Width = _Width
End Set
End Property
End Class
///
"Marty McFly" <Ma***@Mc.Fly> wrote in message
news:eX**************@TK2MSFTNGP09.phx.gbl...
Hello,

I have a control class that inherits from

System.Web.UI.WebControls.Button.
When I drag this control from the "My User Controls" tab in the
toolbox onto
the form, I want it to reflect the following default properties:

Height = 32px, Width = 144px.

I declare the Width property in my control as...

\\\
<DefaultValueAttribute(GetType(Unit), "144px"), _
DescriptionAttribute("The width of the Cancel button.")> _
_
Public Overrides Property Width() As Web.UI.WebControls.Unit
Get
Return Me.Width
End Get
Set(ByVal Value As Web.UI.WebControls.Unit)
Me.Width = Value
End Set
End Property
///

After building the project, the Width in the Properties pane of the
IDE
is disabled and displays the text: "Exception of type
System.StackOverflowException was thrown.".

I also tried to use the following line of code, but it barked about
requiring a constant expression:
<DefaultValueAttribute(Unit.Pixel(144)), _ ...

Does anyone have any ideas? Many thanks!!

Take care,

Marty



Nov 20 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.