Frage

Ich laufe in ein Problem auf allen 4 Seiten ein Textfeld in eine Form zu verankern wollen. Ich habe eine Textbox auf ein Formular, und legen Sie die Multiline-Eigenschaft auf True und die Anchor-Eigenschaft nach links, rechts, oben und unten, so dass das Feld wird mit dem Formular zur Laufzeit erweitern und schrumpft. Ich habe auch ein paar andere Steuerelemente oberhalb und unterhalb der Textbox.

Die Verankerung funktioniert einwandfrei in Visual Studio 2005 (dh ich die Form der Größe verändern kann und habe die Kontrollen zu erweitern und als erwartetes schrumpfen), aber wenn ich das Projekt ausführen, wird der Boden der Textbox auf den Boden der Form erweitert, hinter den anderen Kontrollen, die normalerweise unter ihm erscheinen würde. Dieses Problem tritt auf, wenn das Formular geladen wird, bevor eine Redimensionierung versucht wird. Die Verankerung der Textbox ist korrekt für die oben, links, und die rechte Seite; nur ist der Boden gestört.

Hat jemand davon gehört und wenn ja, sind Sie in der Lage, eine Lösung zu finden?

Danke!

UPDATE:

Hier finden Sie einige der Designer-Code per Greg D's Anfrage (ich das Zeug nur bin auch, die sich mit der Textbox zu tun hatte, nicht die anderen Kontrollen):

Friend WithEvents txtRecommendationText1 As System.Windows.Forms.TextBox

<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
    Me.txtRecommendationText1 = New System.Windows.Forms.TextBox

    ' ...snip...

    'txtRecommendationText1

    Me.txtRecommendationText1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
                Or System.Windows.Forms.AnchorStyles.Left) _
                Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
    Me.txtRecommendationText1.Location = New System.Drawing.Point(4, 127)
    Me.txtRecommendationText1.Multiline = True
    Me.txtRecommendationText1.Name = "txtRecommendationText1"
    Me.txtRecommendationText1.Size = New System.Drawing.Size(223, 149)
    Me.txtRecommendationText1.TabIndex = 10
End Sub

ANOTHER UPDATE:

Die Textbox ich ursprünglich geschrieben wurde nicht von einer Basisklasse Form vererbt (obwohl es zu einer benutzerdefinierten Benutzer Control-Klasse hinzugefügt wurde, ich wahrscheinlich, dass bereits erwähnt haben soll), aber ich vor kurzem lief in das gleiche Problem auf einem völlig unabhängig Satz von Steuerelementen, die von einer Basisklasse geerbt Form wurden. Es ist einfach, diese Probleme auf mögliche Fehler in dem .NET-Framework schuld, aber es fängt wirklich so zu mir zu suchen.

War es hilfreich?

Lösung 3

Die Textbox ich ursprünglich geschrieben wurde nicht von einer Basisklasse Form vererbt (obwohl es zu einer benutzerdefinierten Benutzer Control-Klasse hinzugefügt wurde, ich wahrscheinlich, dass bereits erwähnt haben soll), aber ich vor kurzem lief in das gleiche Problem auf einem völlig unabhängig Satz von Steuerelementen, die von einer Basisklasse geerbt Form wurden. Es ist einfach, diese Probleme auf mögliche Fehler in dem .NET-Framework schuld, aber es fängt wirklich so zu mir zu suchen.

Andere Tipps

Ist Ihr Form lokalisiert? Überprüfen Sie die Ressourcendateien für einen Eintrag mit Textbox.Size, löschen und setzen Sie die Größe.
Ist Ihre Form geerbt und ist die Textbox auf der Grundform? Versuchen Sie, die Textbox des Zugriffsmodifikator zu geschützten oder öffentlichen Einstellung.
Haben Sie eigene Größe ändern Logik implementiert? Schalten Sie es aus und sehen, ob das Problem ist immer noch da.
Eingegeben haben Sie eine Textbox.MinimumSize / MaximumSize? Entfernen oder ändern Sie den Wert.

Es könnte auch eine Kombination dieser Dinge sein ...

Hat Snap das Formular zurück auf das erwartete Layout, wenn Sie die Größe ändern, nachdem es weirdly initialisiert wurde? Außerdem haben Sie eine Höhe oder MinimumHeight / MaximumHeight Eigenschaft für das Textfeld festlegen?

Wenn möglich, ein paar Schnipsel von dem Designer-Code könnten nützlich sein. :)

Eine Möglichkeit, die ich in der Vergangenheit ausgeführt habe, ist DPI. Wenn Sie mit / Testen Sie Ihren Code auf einem Computer mit einem anderen DPI-Einstellung als die Maschine, die Sie entwickeln auf, können Sie einige seltsame Dinge beobachten.

Die Ankerfunktionalität stellt im wesentlichen einen festen Abstand zwischen dem Rand einer Steuerung und dem Rand des übergeordneten Steuerung. Ist Ihr Textbox innerhalb einer anderen Steuerung (zum Beispiel ein Panel) eingebettet, die nicht seine Anker hat richtig eingestellt? Ein Rechtsklick auf das Textfeld in der Designer sollte ein Menü öffnet sich, dass Sie alle Steuerelemente können wählen, darunter vorhanden sind, auch.

Gibt es in Ihrem Programm gehört beliebige benutzerdefinierte Logik Größe ändern, oder ist es die Größe der Textbox programmatisch außerhalb des Designer-generierten Code ändern? Das könnte auch in seltsamen Verhalten führen. Ich habe in meiner Organisation Wartung für eine Reihe von Stücken von Software übernommen, wo die ursprünglichen Entwickler sehr viel Zeit damit verbracht, die Umsetzung (Buggy) die Größe Logik, die ich herausreißen musste, so dass ich nur die Designer generierten Code lassen könnte das tun Arbeit für mich.

Es ist sehr wahrscheinlich, weil die Eigenschaft ‚Autoscale‘ in InitializeComponent gesetzt wird (). Versuchen Sie es auf ‚Keine‘ einstellen und sehen, ob es das behebt. Ich habe jetzt dieses Problem ein paar Mal habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top