Laden...

ListViewItem werden abgeschnitten

Erstellt von Pedro_15 vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.843 Views
P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 16 Jahren
ListViewItem werden abgeschnitten

Hallo Ihr,

ich lade eine Textfile in ein Listview Objekt mit zwei Spalten 1. Zeilennummer und 2. Spalte der Text.

Funktioniert auch alles, nur das der Text wird nach 262 Zeichen abgeschnitten.

ListView.View = Details

Hat jemand eine Idee, wie ich das umgehen kann?

Pedro

2.760 Beiträge seit 2006
vor 16 Jahren

Kannst du davon evtl. ein wenig Code posten? 262 Zeichen klingt ja nicht besonder plausibel.

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 16 Jahren

Das mit dem Code ist eigentlich ganz einfach.


String text = "bla" //länger mehr als 270 z.B
listview_1.SubItems.Add(text);

und im Listview Object wird nur bis zum 262 Zeichen angezeigt.

Pedro

215 Beiträge seit 2004
vor 16 Jahren

steht vielleicht irgendwo ein 'nullbyte' im string?
Wird 'aaaaaaa....aaa' (300 mal) auch abgeschnitten?

2.760 Beiträge seit 2006
vor 16 Jahren

Ich habe es jetzt mal folgendermaßen ausprobiert weil ich es einfach nicht wahrhaben wollte, aber so wie es aussieht schneidet er den Text echt ungefragt ab.


string itemText = "";
         for(int i=0; i < 1000; i++)
         {
            itemText += "a";
         }
         listView1.Items.Add(itemText).SubItems.Add(itemText);

Dann tut es mir leid, da weiss ich jetzt auch nicht weiter. MSDN?

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 16 Jahren

Sorry mein Fehler das ListView Feld ist in der Anzeig nur so gross,
wenn ich oben die Spalte vergrössere ist alles zu sehen.

Kann ich irgendwo einstellen, das er immer alles aus einer Spalte anzeigt (mit Scrollbalken)?

Danke Pedro

1.985 Beiträge seit 2004
vor 16 Jahren

Hallo Pedro_15,

das Problem hatten wir schon mal: ListViewItem schneidet Text ab...

In dem Threads gabs zwar auch keine direkte Lösung sondern auch nur die Erkenntnis, dass der Text wohl wirklich irgendwann abgeschnitten wird.

Da hilft wohl nur selber zeichnen.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 16 Jahren

Hallo,

Danke für die Antworten.

Meiner Meinung nach scheint es aber nur ein anzeige Problem zu sein.
Denn wenn ich per Hand die Spalte vergrössere wird der Text über 400 Zeichen (habe ich getestet) angezeigt.

Die Frage ist nur wie kann ich die Grösse der Spalte abhängig vom Text ändern.

Pedro

2.760 Beiträge seit 2006
vor 16 Jahren

Da gibt es ein AutoSizeMode Enum oder so ähnlich, und ein passendes Property.

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 16 Jahren

Hallo jaensen,

ich glaube das ist genau der Bug.


listView.AutoResizeColumn(1,ColumnHeaderAutoResizeStyle.ColumnContent);

Vergrössert zwar das Feld aber nur bis 262 Zeichen, danach muss man per Hand das Feld vergrössern.

Hat jemand eine Idee, wie man das umgehen kann?

Danke!

Pedro

2.760 Beiträge seit 2006
vor 16 Jahren

Naja, is vielleicht etwas umständlich aber wenns nur daran hängt:


//Pseudocode:
Size stringSize = System.Drawing.Graphics.MeasureString(text, font);
listView1.Columns[0].Width = stringSize.Width;

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 16 Jahren

Danke werde ich mal probieren.

Pedro

P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 16 Jahren

Klappt Prima.

Danke!

Pedro




Graphics sourceLv = lvSource.CreateGraphics();
SizeF stringSize = sourceLv.MeasureString(lineSource, lvSource.Font); //lvSource ist Listview

lvSource.Columns[1].Width = (int) stringSize .Width;