Ĺadny brzuch
Cześć!
Niestety mój poprzedni wątek - nie przyniósł odpowiedzi na gnębiący mnie problem.Zapytam więc może inaczej - coś zupełnie podstawowego ...
Mamy 3 klasy:
- klasa program (uruchamia się jako pierwsza)
package WindowsApplication1; import System.Collections.Generic.*; import System.Windows.Forms.*; /** * Summary description for Program */ public class Program { public static void main(String[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); Class1 klasa = new Class1(); } }
- klasę, która tworzy i obsługuje okno Form - klasa Form1
package WindowsApplication1; import System.Collections.Generic.*; import System.Data.*; import System.Drawing.*; import System.ComponentModel.*; import System.Windows.Forms.*; /** * Summary description for Form1. */ public class Form1 extends System.Windows.Forms.Form { public TextBox textBox1; private System.ComponentModel.IContainer components; public Form1() { InitializeComponent(); //text_ch("asadfasdf"); // jeżeli tutaj umieścić tę linię kodu to tutaj udaje sie zmienić zawartość textBox'a } //tutaj jest kod Windows Form Designer generated code public void text_ch(String s) { textBox1.set_Text(s); } }
- a tutaj ostatnia klasa, w której próbujemy ustawić zawartość textBox'a
package WindowsApplication1; /** * Summary description for Class1. */ public class Class1 extends Form1 { public Class1() { text_ch("bla bla");//niestety ta instrukcja kodu nie przyniesie rezultatu } }
Proszę o pomoc, sugestie - mam z tym duży problem - od niedawna dopiero piszę w J# (szczególnie tryb graficzny) - więc pewnie jeszcze brak mi podstaw. Serdecznie pozdrawiam.
Ano nie przyniesie rezultatu gdyż Class1 nie wie do czego się odwołujesz. Musisz napisać
super.text_ch("bla bla")
super jest słowem kluczowym działającym podobnie jak this tylko że:
this. - odwołanie do samego siebie (to tak jakbyś napisał w Class1 Class1.)
super. - odwołanie do klasy rodzica czyli tej, z której dziedziczysz.
Można to zrobić też bez dziedziczenia, wtedy w klasie Class1, nie dziedziczysz ale piszesz takie coś:
WindowsApplication1.Form1 foremka = new WindowsApplication1.Form1; foremka.text_ch("bla bla");
Pisane z głowy ;)
Pozdro.
-----------------
Tutaj masz fajny kurs javy. A zatem też J#, bo to w zasadzie to samo (M$ wszystko podkradł ;)). Tylko biblioteki są zupełnie inne z tego co wiem... http://java-serwis.ovh.org/
Użytkownik Ktoso the Ryba edytował ten post 31 grudzień 2005, 17:38
Sprawdzałem - niestety lipa ...
hmmmm... to mi się wydaje conajmniej dziwne... Próbowałeś z tworzeniem obiektu no nie? (drugi sposób co podałem). Nie mam IDE do J# pod ręką, bo bym sprawdził... Ale sposób:
Klasa kl = new Klasa();
kl.metodaTejKlasy();
jest zdeczka pewniakiem...
Czyżby java i J# się na takim poziomie już różniły o_O Bo raczej błędu tu nie widzę...
A "lipa" mam rozumieć jako: błąd w czasie kompilacji, nie robienie niczego w końcowym programie, zawieszanie programu czy co?
Użytkownik Ktoso the Ryba edytował ten post 31 grudzień 2005, 18:50
In .net 2.0, one thread can't change the text property of a UI element created by another thread. For doing so, the other thread need to call the BeginInvoke() method on that UI element.
For details please refer this link. It has a sample code where one thread manipulates the UI controls created by another thread.
Już się dowiedziałem w czym problem - teraz tylko muszę podłubać, w końcu zrealizować. Pozdrawiam - i dzięki za uwagę.
Rozwiązałem problem - http://www.codeguru....posts-1570.aspx - zerknijcie na ostatni na dole post - mój zresztą - gratuluje panom z Microsoftu
pomysłowości w J#... :P
nigdy bym się nie domyślił, a i w dokumentacji o tym ani słowa ...
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Niestety mój poprzedni wątek - nie przyniósł odpowiedzi na gnębiący mnie problem.Zapytam więc może inaczej - coś zupełnie podstawowego ...
Mamy 3 klasy:
- klasa program (uruchamia się jako pierwsza)
package WindowsApplication1; import System.Collections.Generic.*; import System.Windows.Forms.*; /** * Summary description for Program */ public class Program { public static void main(String[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); Class1 klasa = new Class1(); } }
- klasę, która tworzy i obsługuje okno Form - klasa Form1
package WindowsApplication1; import System.Collections.Generic.*; import System.Data.*; import System.Drawing.*; import System.ComponentModel.*; import System.Windows.Forms.*; /** * Summary description for Form1. */ public class Form1 extends System.Windows.Forms.Form { public TextBox textBox1; private System.ComponentModel.IContainer components; public Form1() { InitializeComponent(); //text_ch("asadfasdf"); // jeżeli tutaj umieścić tę linię kodu to tutaj udaje sie zmienić zawartość textBox'a } //tutaj jest kod Windows Form Designer generated code public void text_ch(String s) { textBox1.set_Text(s); } }
- a tutaj ostatnia klasa, w której próbujemy ustawić zawartość textBox'a
package WindowsApplication1; /** * Summary description for Class1. */ public class Class1 extends Form1 { public Class1() { text_ch("bla bla");//niestety ta instrukcja kodu nie przyniesie rezultatu } }
Proszę o pomoc, sugestie - mam z tym duży problem - od niedawna dopiero piszę w J# (szczególnie tryb graficzny) - więc pewnie jeszcze brak mi podstaw. Serdecznie pozdrawiam.
Ano nie przyniesie rezultatu gdyż Class1 nie wie do czego się odwołujesz. Musisz napisać
super.text_ch("bla bla")
super jest słowem kluczowym działającym podobnie jak this tylko że:
this. - odwołanie do samego siebie (to tak jakbyś napisał w Class1 Class1.)
super. - odwołanie do klasy rodzica czyli tej, z której dziedziczysz.
Można to zrobić też bez dziedziczenia, wtedy w klasie Class1, nie dziedziczysz ale piszesz takie coś:
WindowsApplication1.Form1 foremka = new WindowsApplication1.Form1; foremka.text_ch("bla bla");
Pisane z głowy ;)
Pozdro.
-----------------
Tutaj masz fajny kurs javy. A zatem też J#, bo to w zasadzie to samo (M$ wszystko podkradł ;)). Tylko biblioteki są zupełnie inne z tego co wiem... http://java-serwis.ovh.org/
Użytkownik Ktoso the Ryba edytował ten post 31 grudzień 2005, 17:38
Sprawdzałem - niestety lipa ...
hmmmm... to mi się wydaje conajmniej dziwne... Próbowałeś z tworzeniem obiektu no nie? (drugi sposób co podałem). Nie mam IDE do J# pod ręką, bo bym sprawdził... Ale sposób:
Klasa kl = new Klasa();
kl.metodaTejKlasy();
jest zdeczka pewniakiem...
Czyżby java i J# się na takim poziomie już różniły o_O Bo raczej błędu tu nie widzę...
A "lipa" mam rozumieć jako: błąd w czasie kompilacji, nie robienie niczego w końcowym programie, zawieszanie programu czy co?
Użytkownik Ktoso the Ryba edytował ten post 31 grudzień 2005, 18:50
In .net 2.0, one thread can't change the text property of a UI element created by another thread. For doing so, the other thread need to call the BeginInvoke() method on that UI element.
For details please refer this link. It has a sample code where one thread manipulates the UI controls created by another thread.
Już się dowiedziałem w czym problem - teraz tylko muszę podłubać, w końcu zrealizować. Pozdrawiam - i dzięki za uwagę.
Rozwiązałem problem - http://www.codeguru....posts-1570.aspx - zerknijcie na ostatni na dole post - mój zresztą - gratuluje panom z Microsoftu
pomysłowości w J#... :P
nigdy bym się nie domyślił, a i w dokumentacji o tym ani słowa ...