Anonymní profil mrsami – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil mrsami – Programujte.comAnonymní profil mrsami – Programujte.com

 

Příspěvky odeslané z IP adresy 160.216.156.–

mrsami
.NET › [C#] Přístup k ovládacím prv…
20. 2. 2008   #66616

Pro nejjednodussi pochopeni je dobrej tenhle priklad, je to ten nejjednodussi bezpecnej zpusob:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
private const int s = 12;

Thread mujThread = null;
delegate void mujDelegat(string text);//delegat pro pristup k textboxu
delegate void mujDelegatListBox(string[] text);//pro pristup k listboxu

public void startFce()//jenom spousteci fce, musi byt bezparametricka, nesmi byt static
{
this.vykonnaFce("Nastaveno");//musi byt volana dalsi fce, aby mohl byt predan
//spousteci parametr

}


public Form1()
{
InitializeComponent();
}

private void vykonnaFce(string text)//tato fce uz opravdu neco dela
{
if (this.textBox1.InvokeRequired)//pokud je volano z jineho threadu
//zabezpeci bezpecny pristup ke komponente,
//dale bude vykonan blok else
{
mujDelegat d = new mujDelegat(vykonnaFce);//vlakno si vytvori vlastniho delegata
this.Invoke(d, new object[] { text });
}

else//sem se pise kod, CO SE MA UDELAT !!!!!!!
{
this.textBox1.Text = text;
}
}


private void startFceListBox()//pocatecni fce pro listbox
{
string[] pole = new string[] {"1","2"};
this.vykonnaFceListBox(pole);
}

private void vykonnaFceListBox(string [] text)//vykonna fce pro listbox
{
if (this.pridejListBoxButton.InvokeRequired)//zabezpeci bezpecny pristup k listboxu
{
string[] pole = text ;
mujDelegatListBox d = new mujDelegatListBox(this.vykonnaFceListBox);
this.Invoke(d, new object[] { pole });
}
else//sem opet kod, co se ma vykonat
{
foreach (string i in text)
this.listBox1.Items.Add(i);
}

}

private void nastavTextBoxButton_Click(object sender, EventArgs e)
{
this.mujThread = new Thread(new ThreadStart(this.startFce));
this.mujThread.Start();

}

private void pridejListBoxButton_Click(object sender, EventArgs e)
{
this.mujThread = new Thread(new ThreadStart(startFceListBox));
this.mujThread.Start();
}


}
}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý