#1
Ik heb een UserControl met daarop een Label en TextBox. In de UserControl heb ik hetvolgende staan:
Voor het Label werkt dit zoals verwacht, maar niet voor de TextBox. Vanuit de code werkt de TextBox correct, maar niet vanuit de Designer.
Stel dat ik de UserControl op een Form zet. Wanneer ik in Designer mode via de Properties grid van Visual Studio waardes invul bij Text en Caption voor de UserControl, dan zie ik beide waardes verschijnen in de voorbeeldweergave, maar niet in de code. Daar staat enkel de waarde van Caption. Wanneer ik de applicatie dan uitvoer is het Label wel ingevuld, maar de TextBox is leeg. Wanneer ik expliciet in de code zet userControl.Text = "blah", dan verschijnt het wel correct. Maar nooit langs de Designer View.
Hoe kan ik dit verhelpen?
#2
Een tweede puntje dat hier mogelijk aan vast hangt is de default waarde. Zoals je kan zien uit het codevoorbeeld geef ik default waardes mee. Wanneer ik de UserControl toevoeg aan m'n Form, dan krijgt het Label automatisch de default waarde, maar de TextBox krijgt als .Text de naam van de UserControl (bv "userControl"). Waarom wordt hier niet "Text" ingevuld zoals de default waarde suggereert?
Correctie: Ook het Label krijgt een verkeerde naam... Deze krijgt steeds de naam "label" ongeacht wat ik als default waarde opgeef. Binnen de UserControl noemt het Label eveneens "label". Blijkbaar werkt het zetten van default values iets anders.
Hoe controleer je het gedrag dat de default waarde de naam van de control wordt, of een opgegeven default naam?
Ik heb een UserControl met daarop een Label en TextBox. In de UserControl heb ik hetvolgende staan:
code:
Niet meer dan simpelweg het toewijzen en ophalen van de .Text properties van de TextBox resp. Label. Het 'new' keyword bij de Text property is om de default property van de UserControl te overriden. Dat heeft niets met dit probleem te maken.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| public partial class ATextBox : UserControl
{
[Category("Appearance"), DefaultValue("Text"), Browsable(true),
Bindable(true)]
public new string Text
{
get { return this.textBox.Text; }
set { this.textBox.Text = value; }
}
[Category("Appearance"), DefaultValue("Label"), Browsable(true),
Bindable(true)]
public string Caption
{
get { return this.label.Text; }
set { this.label.Text = value; }
}
} |
Voor het Label werkt dit zoals verwacht, maar niet voor de TextBox. Vanuit de code werkt de TextBox correct, maar niet vanuit de Designer.
Stel dat ik de UserControl op een Form zet. Wanneer ik in Designer mode via de Properties grid van Visual Studio waardes invul bij Text en Caption voor de UserControl, dan zie ik beide waardes verschijnen in de voorbeeldweergave, maar niet in de code. Daar staat enkel de waarde van Caption. Wanneer ik de applicatie dan uitvoer is het Label wel ingevuld, maar de TextBox is leeg. Wanneer ik expliciet in de code zet userControl.Text = "blah", dan verschijnt het wel correct. Maar nooit langs de Designer View.
Hoe kan ik dit verhelpen?
#2
Een tweede puntje dat hier mogelijk aan vast hangt is de default waarde. Zoals je kan zien uit het codevoorbeeld geef ik default waardes mee. Wanneer ik de UserControl toevoeg aan m'n Form, dan krijgt het Label automatisch de default waarde, maar de TextBox krijgt als .Text de naam van de UserControl (bv "userControl"). Waarom wordt hier niet "Text" ingevuld zoals de default waarde suggereert?
Correctie: Ook het Label krijgt een verkeerde naam... Deze krijgt steeds de naam "label" ongeacht wat ik als default waarde opgeef. Binnen de UserControl noemt het Label eveneens "label". Blijkbaar werkt het zetten van default values iets anders.
Hoe controleer je het gedrag dat de default waarde de naam van de control wordt, of een opgegeven default naam?
[ Voor 9% gewijzigd door reyan op 01-06-2006 11:36 ]