winfrom listbox

Status
Niet open voor verdere reacties.

tommich

Gebruiker
Lid geworden
9 okt 2011
Berichten
22
Ik bereken het getal PI top het aantal decimalen gevraagd door de gebruiker (in te vullen in een textbox),dit wordt berekend in een aparte thread,dit wordt berekend in een lus (negen decimalen per keer),deze decimalen worden weergegven als string en in een listbox gestoken,telkens wordt de string dus langer en langer (er komen telkens 9 decimalen bij)in mijn listbox doe ik dus telkens .Clear() .Add().
Maar het probleem is dat wanneer de string langer wordt dan de listbox,de string niet op een volgende lijn begint(maar dus onzichtbaar doorloopt),ik wil ook geen scrollbars gebruiken.Hoe kan ik ervoor zorgen dat deze telkens op een nieuwe lijn start?
Alvast bedankt
Code:
private delegate void TickerDelegate(string s);        
TickerDelegate tickerDelegate1;       
Thread thread1;

 public Form1()
        {
            InitializeComponent();
            tickerDelegate1 = new TickerDelegate(SetLeftTicker);
        }


  private void btnStart_Click(object sender, EventArgs e)
        {
                thread1 = new Thread(new ThreadStart(disp));
                thread1.Start();
        }

 void disp()
        {
            int aantaldecimalen = int.Parse(tbDecimalen.Text);
            Calculator c = new Calculator();
            c.n += new Calculator.negenberekend(lblsvullen);
            c.start(aantaldecimalen); 
        }

 private void lblsvullen(object o, CalculatorEventArgs e) {
            listBox1.Invoke(tickerDelegate1, e.res);  
        }

  private void SetLeftTicker(string s)
        {
            listBox1.Items.Clear();
            listBox1.Items.Add(s);
        }
 
Ik begrijp de vraag niet helemaal? Wil je het formaat van de textbox aanpassen aan de hand van de vraag? In principe kan de gebruiker een miljoen decimalen wensen. Dan ontkom je op een gegeven moment niet meer aan scrollbars. Daarmee zijn batches van 9 decimalen dus ook redelijk inefficient. Een moderne PC doet 100 decimalen elke schermverversing of zo, je geeft nu vaker updates dan je scherm ververst waarschijnlijk :)
 
Je wilt regels afbreken in een ListBox ?

Uit de losse pols (dus niet getest):

[cpp]Dim str As String = "..."
Dim maxAantalKarakters As Integer = 10 ''//Maximale aantal in een rij
Dim n As Integer = str.Length, r As Integer = 0 ''// n = lengte v string, r = aantal rijen
Do
If n > maxAantalKarakters Then
n -= maxAantalKarakters ''//Gooi naar volgende rij
r += 1
Loop until n < maxAantalKarakters
For i As Integer = 0 To r
ListBox1.Items.Add(str.Subtring(r*n, maxAantalKarakters))
Next[/cpp]
 
Bedankt voor de reacties,
Maar had het reeds zelf opgelost.Heb gewoon de listbox even breed gemaakt als mijn form,zo kan de inhoud niet overflowen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan