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ć?
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ć?
foreach(var number in table)
{
textBox.AppendText(number + " ");//spacja po kazdej liczbie
}
var ints = new int[]{1,2,3,4,5};
TextBox1.Text = string.Join(" ", ints);
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
No to można zrobić coś takiego zarówno Twoim kodem jak i @katelx
W pętli wywołujesz to co ma się dziać.
Wiem, ale dalej dodaje cały tekst z tablicy, a nie najpierw pierwszą linijkę potem drugą itd
Pokaż kod.
Zaraz linijkę? Dodajesz z "\n"
?
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
No to zamiast +=
dawaj samo =
Wtedy dodaje tylko ostatni element tablicy
Pokaż kod.
for (int i = 0; i < tab.Length; ++i)
{
TextBox1.Text = tab[i];
element.SetAttribute("value", TextBox1.Text);
}
To ustawia wszystkie elementy po kolei, tylko że robi to tak szybko że Ty zobaczysz dopiero ostatni.
To jak zrobić żeby robiło to co np. 25 sec? timer Interval nie działa
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++;
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
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 ;)
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.
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.
ah no tak. Ale jak to w końcu zrobić? Jakiś zarys kodu?
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);
}
});