Frage

Ich habe eine Situation, bekommt (eine schlüsselbasierte Suche), wo ich mehrere Eingänge unterschiedlicher, aber gezwungen, Länge haben werde. So bauen Ich bin eine gemeinsame Steuerung für jeden Eingang zu verwenden, und diese Kontrolle hat einen Text für die Verwendung, wenn die Eingabe Typ Freitext ist. In diesem Fall würde ich die Länge des TextBox wie die Einschränkung auf der Grundlage der eingegebenen platziert, um über den MaxLength-Eigenschaft des TextBox (oder zumindest auf einer maximale Länge von irgendeiner Art).

Wie kann ich das tun? Ich weiß, dies mit variabler Breiten Zeichen technisch unmöglich ist, aber ich bin daran interessiert, zu schließen. Die Felder variieren in maximaler Länge von 3 Zeichen auf etwa 90.

War es hilfreich?

Lösung 5

Basierend auf, was bisher gesagt wurde, ich glaube, die ideale Lösung in diesem Fall eine Kombination von Johns Vorschlag ist, und dass die weiter von Mitchel und overslacked. Also, ich werde die Längen mit einem Standard-Zeichen (sagen „C“) berechnen, und legen Sie dann die Breite gleich [Grenze slack] + ([Zeichenlänge] * ([Anzahl der Zeichen] + [5 - Zahl Zeichen mod 5])).

Ich werde die Zeichenlänge neu zu berechnen haben und die Feldbreite jederzeit die Schrift ändert.

Andere Tipps

Ich würde versuchen, diesen dynamischen Ansatz zu vermeiden.
Glauben Sie wirklich, dass es Wert für den Benutzer hinzufügt? Meiner Meinung nach sieht es seltsam, wenn eine gemeinsame Steuerung einen anderen Blick die ganze Zeit hat. Glauben Sie, der Benutzer zwischen einer Textbox unterscheiden können, die 32 Zeichen und einem erlaubt, die 29 Zeichen erlaubt? Wie wäre es extrem Werte? Wenn z.B. nur drei Zeichen sind erlaubt - oder sogar 1024.
Ich würde die Textbox die gleiche Länge, und immer wieder -, die besser für die Kontrolle und einfacher zu implementieren. Wenn der Benutzer einen Hinweis auf die max Länge des Textes muss ein Etikett hinzufügen, die sagt: „29 Zeichen links“ und dass Aktualisierungen während der Eingabe ...

Eine Möglichkeit, dass Sie vielleicht in der Lage sein, dies zu tun, aber nicht 100% würde genau sein, die „MeasureString“ Methode zu verwenden, von der Grafik-Objekt, um zu sehen, wie breit X Zeichen ist, mit der Schriftart, die derzeit von der verwendet wird, Textbox.

Von dort können Sie dann berechnen, die benötigt „extra“, die Grenzen zu decken usw. keine exakte Wissenschaft, aber es funktionieren würde.

Andere Gedanken

die gesamte Zeichenfolge Mess könnte ein bisschen ineffizient sein, Sie 1 X Charakter messen könnten (was als andere typischerweise größer ist), dann multipliziere es mit all

Es wäre einfacher, und möglicherweise mehr optisch ansprechend, zu „Brocken“, die Textbox Größen. Wählen Sie eine Breite, die für Felder von 1-5 Zeichen funktioniert, dann eine Breite für 6-10, dann 11-20,20-30,30-50 usw. Auf diese Weise können Sie die seltsame visuelle Ausrichtung Probleme vermeiden, was passieren würde, wenn man versucht, vertikal stapeln Felder von 29, 32 und 27 Zeichen.

Dies ist (fast) unmöglich mit variabler Breite Schriftart.

Ich glaube, Sie versuchen, einen relativ ‚breit‘ Charakter finden können, aber das kann noch zu Problemen führen.

Die einfachste Lösung wäre wahrscheinlich eine zufriedenstellende Zeichenbreite zu finden sein (und wahrscheinlich codieren diese pro Schriftgröße / Familie), und dann multiplizieren Sie einfach, dass mit der max Länge.

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