Text-Eigenschaft dynamisch hinzugefügter Buttons

09/09/2008 - 16:43 von Werner Schmidt | Report spam
Hallo Gruppe,

ich traue mich fast gar nicht diese Frage zu stellen aber ich bin soeben
über folgendes "Verhalten" gestoßen:


Um mich mit der dynamischen Erzeugung von Formularen vertraut zu machen
habe ich folgendes minimale Programm erstellt (VS2005):

[CODE]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace DynamischeForms
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitializeControls();
}

private void InitializeControls()
{
SuspendLayout();

for (int i = 0; i < 20; i++) {
Button newButton = new Button();
newButton.Text = "test";
newButton.Padding = new Padding(25);
newButton.Margin = new Padding(25);
newButton.Location = new Point(newButton.Padding.Left, i *
newButton.Padding.Top + newButton.Padding.Top);
Controls.Add(newButton);
}

ResumeLayout();

}
}
}
[/CODE]

Die Eigenschaft Form1.AutoSize habe ich auf 'true' gesetzt.


Die Buttons werden erwartungsgemàß auf das Formular gezeichnet, aber
sàmtliche Buttons besitzen keine Beschriftung obwohl ich die
Text-Eigenschaft jedes einzelnen Buttons explizit auf "test" gesetzt habe?!?

Ich habe auch schon newButton.Refresh() sowie newButton.Update()
probiert sowie eine Schleife, die nach Hinzufügen der Buttons über
sàmtliche Buttons iteriert und versucht die Text-Eigenschaft zu setzen,
allerdings ohne Erfolg (nicht dass ich derartiges Rumgehacke als
professionell bezeichnen würde)...


Nur wenn ich die Text-Eigenschaft eines per Formular-Editor
hinzugefügten Buttons àndere, funktioniert dies ohne Probleme.


Kann mir jemand helfen dieses Verhalten nachzuvollziehen?


Mit der Bitte um Erleuchtung...


Gruß


Werner
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
09/09/2008 - 17:06 | Warnen spam
Hallo Werner,

"Werner Schmidt" schrieb:

newButton.Padding = new Padding(25);
newButton.Margin = new Padding(25);
newButton.Location = new Point(newButton.Padding.Left, i * newButton.Padding.Top + newButton.Padding.Top);



wenn man Padding weglàsst klappts :)

Padding verschiebt den Text in der Art, dass ein innerer Rahmen
gesetzt wird. Da dein Button aber wahrscheinlich gar keine 25
Pixel hoch ist, ist der Text nicht sichtbar. Mach mal:

newButton.Size = New Size( 100, 100 )

Dann siehst Du den Text wieder.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen