Tablica do text boxa

0

Witam.

Jak po kolei dodawać tekst z tablicy do textboxa? Np. Mam w tablicy:

1
2
3

I chciałbym żeby to dodawało się do textboxa po kolei. Czyli najpierw 1 potem 2 itd. Jak takie coś zrobić?

1
foreach(var number in table)
{
    textBox.AppendText(number + " ");//spacja po kazdej liczbie
}
1
var ints = new int[]{1,2,3,4,5};
TextBox1.Text = string.Join(" ", ints);
0

Może się źle wyraziłem.

Mi chodzi o to żeby dodawały się po kolei w sensie że najpierw

1
//coś się dzieje (kod)
Potem 2
//coś się dzieje

itd

Chciałem to zrobić tak:

for (int i = 0; i < tab.Length; i++)  
TextBox1.Text += tab[i];

//kod

Ale nie działa

0

No to można zrobić coś takiego zarówno Twoim kodem jak i @katelx
W pętli wywołujesz to co ma się dziać.

0

Wiem, ale dalej dodaje cały tekst z tablicy, a nie najpierw pierwszą linijkę potem drugą itd

0

Pokaż kod.

Zaraz linijkę? Dodajesz z "\n"?

0

Hm, nie wiem czy się dokładnie rozumiemy.

Mi chodzi o to że:

Dodaje pierwszy element z tablicy
wykonuje kod
Dodaje drugi element z tablicy (usuwa poprzedni (TextBox1.Clear();))
wykonuje kod

itd dopóki nie skończą się elementy w tablicy

0

No to zamiast += dawaj samo =

0

Wtedy dodaje tylko ostatni element tablicy

0

Pokaż kod.

0
 for (int i = 0; i < tab.Length; ++i)
                            {
                                TextBox1.Text = tab[i];
                                element.SetAttribute("value", TextBox1.Text);
}
                                 
0

To ustawia wszystkie elementy po kolei, tylko że robi to tak szybko że Ty zobaczysz dopiero ostatni.

0

To jak zrobić żeby robiło to co np. 25 sec? timer Interval nie działa

0

działa, 1 sekunda to

 timer.Interval = 1000;

nie 1 ...

poza tym jeśli chcesz to zrobić za pomocą timer'a musisz wyciągnąć zmienną 'i' po za timer, natomiast w timmerze powinno być coś takiego:

textBox.Text = tab[i];
i++;
0
wojas666 napisał(a):

działa, 1 sekunda to

 timer.Interval = 1000;

nie 1 ...

Raczej chodzi mu o to że nie można odświeżyć UI.

@ridel musisz użyć Invoke https://msdn.microsoft.com/en-us/library/system.windows.forms.control.invoke.aspx

0

jesli uzyjesz System.Forms.Timer to nie bedziesz musial sie przejmowac watkami https://msdn.microsoft.com/en-us/library/system.windows.forms.timer%28v=vs.110%29.aspx
jesli dalej nie jestes w stanie nic wymyslic to po prostu daj kod albo poszukaj jasnowidza ;)

0
 private void timer1_Tick(object sender, EventArgs e)
        {
               
                HtmlElementCollection wpis = webBrowser1.Document.GetElementsByTagName("input");
                foreach (HtmlElement wp in wpis)
                {

                            for (int i = 0; i < tab.Length;)
                            {
                                timer1.Interval = 250;
                                TextBox1.Text = tab[i];
                                timer1.Interval = 250;
                                wp.SetAttribute("value", TextBox1.Text);
                                i++; 

                             }
                }
      }

Mam to zrobione tak.

I np. timer Interval nie działa. Nie czeka tych 250ms. I dalej dodaje do textboxa tylko ostatni element z tablicy.

0

o_O

Cały timer1_Tick wykonuje się co Interval milisekund. Nie powinno być w nim pętli, tylko dodawanie jednego elementu - za każdym razem innego.

0

ah no tak. Ale jak to w końcu zrobić? Jakiś zarys kodu?

0

to moze rzeczywiscie najprosciej bedzie bez timera

TaskFactory.StartNew(() =>
{
for (int i = 0; i < tab.Length; ++i)
{
    var element = tab[i];
    TextBox1.BeginInvoke(new Action(() =>
    {
        TextBox1.Text = element;
        element.SetAttribute("value", TextBox1.Text);
    }));
    Thread.Sleep(250);
}
});

1 użytkowników online, w tym zalogowanych: 0, gości: 1