Ich entwickle eine Anwendung, die eine ListBox
Kontrolle benötigt. Leider, wenn ich zu viele Artikel in der ListBox
hinzufügen, wird eine vertikale Bildlaufleiste angezeigt. Gibt es etwas, was ich tun kann, um die vertikale Bildlaufleiste zu verbergen, die von der ListBox
gezeigt wird? Ich kann sehen, dass es eine Eigenschaft gibt, um die horizontale Bildlaufleiste zu verbergen, aber es gibt keine Eigenschaft für die vertikale Bildlaufleiste.Vertikale Bildlaufleiste im ListBox Steuerelement ausblenden
Antwort
Das Problem wurde gelöst. Ich habe erstellt einfach ein neues Projekt der Vorlage eine Klassenbibliothek mit dem folgenden Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ClassLibrary1
{
public class MyListBox : System.Windows.Forms.ListBox
{
private bool mShowScroll;
protected override System.Windows.Forms.CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
if (!mShowScroll)
cp.Style = cp.Style & ~0x200000;
return cp;
}
}
public bool ShowScrollbar
{
get { return mShowScroll; }
set
{
if (value != mShowScroll)
{
mShowScroll = value;
if (IsHandleCreated)
RecreateHandle();
}
}
}
}
}
Dann habe ich das Projekt baut eine neue Klassenbibliothek ClassLibrary1.dll
Auf meinem Hauptprojekt Ausgabe I habe mit der rechten Maustaste auf ToolBox
geklickt und Choose Items...
ausgewählt. Klicken Sie auf Durchsuchen ... und wählte die Klasse Bibliothek, die ich vor kurzem erstellt (ClassLibrary1.dll) und klickte auf Öffnen Sie dann auf OK. So konnte ich meine benutzerdefinierte ListBox
, die keine vertikalen Bildlaufleisten mehr hat.
Abgesehen von der horizontalen Bildlaufleiste gibt es bei normaler Verwendung keine Möglichkeit, die vertikale Bildlaufleiste auszuschalten.
Sie können es immer nur sichtbar oder automatisch mit der Eigenschaft ScrollAlwaysVisible
(auch in VB) setzen.
Wenn Sie Artikel hinzufügen, können Sie stattdessen Clientsize neu berechnen, indem die Berechnung, so etwas wie dieses (ungetestet, müssen Sie möglicherweise Padding-Werte als auch hinzugefügt werden):
Size sz = new Size(ListBox1.ClientSize.Width, _
ListBox1.Items.Count * ListBox1.Font.Height);
ListBox1.ClientSize = sz
Natürlich sollten Sie hinzufügen Überprüfen Sie den Wert, wenn er Null ist und/oder eine minimale/maximale Höhe haben soll.
Danke, ich habe erfolgreich die vertikale Bildlaufleiste ausgeblendet, die eine Klassenbibliothek erstellt. Ich poste meine Lösung in einem Moment :) –
Nice :-) Wie Sie gefragt, ob es mit dem ListBox-Steuerelement getan werden konnte, lasse ich meine Antwort so wie sie ist :-) – K3N
Keine Probleme. Danke für die Antwort. Ich wünsche ihnen einen wunderbaren Tag :) –
- 1. Vertikale Bildlaufleiste?
- 2. Wie kann ich eine vertikale Bildlaufleiste in meiner ListBox bekommen?
- 3. C#: Wird eine vertikale Bildlaufleiste automatisch in einer Listbox angezeigt?
- 4. Verhindern, dass Silverlight ListBox vertikale Bildlaufleiste angezeigt wird
- 5. Div vertikale Bildlaufleiste zeigen
- 6. Iframe vertikale Bildlaufleiste ausblenden und den gesamten Inhalt anzeigen
- 7. jqGrid vertikale Bildlaufleiste
- 8. JComboBox anpassen vertikale Bildlaufleiste
- 9. ItemsControl fehlende vertikale Bildlaufleiste
- 10. Alfresco Freigabe vertikale Bildlaufleiste
- 11. ListBox zeigt keine Bildlaufleiste
- 12. Benutzerdefinierte Listbox Bildlaufleiste Stil Problem
- 13. Jquery-Dialoghöhe und vertikale Bildlaufleiste
- 14. CSS reagierende vertikale Bildlaufleiste Ausgabe
- 15. vertikale Bildlaufleiste in ExtJS GridPanel
- 16. Verbergen vertikale Bildlaufleiste in iframe
- 17. ID-Spalte im ListView-Steuerelement ausblenden
- 18. WPF - Listbox-Elemente ausblenden
- 19. CListCtrl Vertikale Bildlaufleiste in der Listenansicht
- 20. Vertikale Bildlaufleiste für eine Spalte unbekannter Höhe
- 21. IE: vertikale Bildlaufleiste erscheint, wenn die horizontale Bildlaufleiste gezeigt wird
- 22. Vertikale Bildlaufleiste sichtbar, aber nicht funktionsfähig CSS
- 23. Iframe 100% Höhe verursacht vertikale Bildlaufleiste
- 24. Körpergröße 100% zeigt vertikale Bildlaufleiste an
- 25. Glatte vertikale Bildlauffunktion mit Mausrad und Bildlaufleiste
- 26. Wissen, welches HTML-Element vertikale Bildlaufleiste verursacht
- 27. Listbox horizontale Bildlaufleiste nicht ordnungsgemäß aktualisiert
- 28. CSS-Layout - Vermeiden Sie vertikale Bildlaufleiste
- 29. wie vertikale Bildlaufleiste in Win-Form
- 30. Vertikale Bildlaufleiste sichtbar aber nicht funktionierend
Wenn Sie die vertikale Bildlaufleiste entfernen, wie würden Benutzer dann auf die Elemente zugreifen, die über den Rand der Bildlaufleiste hinausgehen? –
@LeeTaylor Danke für die Antwort. Ich habe vergessen zu erwähnen, dass ich eine RichTextBox habe. Ich habe es geschafft, die Listbox innerhalb der RichTextBox zu steuern. Es müssen also keine Bildlaufleisten in der Listbox angezeigt werden. Einen schönen Tag haben :) –
OK, mir ist keine Möglichkeit bekannt, die Bildlaufleisten zu entfernen. Der einzige Weg, den ich kenne, besteht darin, sicherzustellen, dass die Listbox lang genug ist, um alle Ihre Gegenstände aufzunehmen. –