|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
[C#] Utilizzare un controllo nella classe
Salve,
devo creare una algoritmo dove faccio uso di un controllo, in questo caso una TextBox, in una classe esterna. Mi spiego attraverso un piccolo esempio. Codice:
public partial class Form1 : Form
{
......
Metodi vari
......
}
private class MiaClasse
{
......
Metodo che usa textBox della Form madre
......
}
Non mi da errore ma penso che ci sia un errore di fondo riguardo all' ereditarietà o magari riguardo al Thread che ha creato la classe Form. Ad ogni modo non funziona lo stesso. Inoltre ho provato a prendere una parte di algoritmo da una programma esterno che utilizzava il delegate ( cose di cui non sono a conoscenza ) ma non riesco ne a capire quella parte ne a farlo funzionare. Qualcuno ha qualche suggeriento ? Grazie. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
up
|
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Nov 2008
Messaggi: 136
|
Scusa ma così non funziona?
Codice:
public partial class Form1 : Form
{
public Form1()
{
myTextBox.Text = new Textbox();;
}
Textbox myTextBox {get;set;}
}
private class MiaClasse
{
public MiaClasse(Form form)
{
myForm = form;
}
Form myForm;
public void ChangeTextbox(string text)
{
myForm.myTextBox = text;
}
}
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Quote:
Il problema sta nela fatto che il .NET non permette di utilizzare in controllo da una Thread che non ha creato il controllo stesso. Qualcuno sa darmi una mano? Perchè non riesco veramente ad uscire |
|
|
|
|
|
|
#5 |
|
Bannato
Iscritto dal: Nov 2008
Messaggi: 136
|
Capito. Comunque una piccola precisione. Quella textbox era appunto quella presente nel form, non un'altra a parte, che in genere viene dichiarata nel designer. L'unica cosa è che non sono stato a scrivere anche il codice necessario per inserirla nel form.
Nelle applicazioni multithread, quando un thread secondario vuole accedere a un controllo del form si utilizzando dei metodi appositi, magari riesci a usarli anche in questa situazione. Al massimo prova a utilizzare gli eventi. |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 268
|
Sono proprio quei metodi appositi che sto cercando.
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Allora ti serve BeginInvoke che inoltra una chiamata asincrona al thread che gestisce la UI, eseguendo il codice del delegate che gli passi.
Se la chiamata dev'essere sincrona, invece, si usa Invoke.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:17.




















