PDAclub.pl - Forum użytkowników technologii mobilnych
Windows Mobile (Classic, Professional, Standard), Windows Phone 6.x oraz 7/8.x/10 => Oprogramowanie PPC => Dla programistów => Wątek zaczęty przez: marianpower w Październik 04, 2009, 01:38:39
-
mam problem z aplikacja w najnowszych romach czyli Win mo 6.5 SE
wpisujac kod form2.showdialog():
w oknie form1 ikonki z form1 zostaja po wyswietleniu 2 formy ( wyswieltaja sie tylko guziki ale nie dzialaja) ale o dziwo gdy juz sie zamknie form 1 to reszta aplikacji dziala jak nalezy. najlepszym rozwiazaniem byloby zamkniecie formy 1 po otwraciu formy 2 - jak to zrobic??
http://w312.wrzuta.pl/obraz/88QkYl5tLmU/touch_pro (http://w312.wrzuta.pl/obraz/88QkYl5tLmU/touch_pro) - gdyby zdjecie sie nie pokazywalo daje link
(http://c.wrzuta.pl/wi9209/81bd9100001cbd954ac7dee4/0/touch%20pro)
mam wrazenie ze jest wina nowych kontrolek
prosze o wszelka pomoc
-
Prawdopodobnie coś wpada w pętle w części ładującej Form2 i przez to widać tylko część przycisków.
Oczyść Form2_Load i odpal np. w timerze z opóźnieniem np. 3 sek.
-
to nie to.
problem wystepuje tylko w romach z nowymi kontrolkami ;(
na starych wszystko dziala
namespace menu_and_tree_test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
file_dialog file = new file_dialog();
file.Show();
}
private void button2_Click(object sender, EventArgs e)
{
Form4 otworz = new Form4();
otworz.ShowDialog();
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void button4_Click(object sender, EventArgs e)
{
net polnet = new net();
polnet.ShowDialog();
}
}
}
przypuscmy ze klikamy button 2
namespace menu_and_tree_test
{
public partial class Form4 : Form
{
public static string baza;
public static string path;
public static string login;
public static string haslo;
public static string sciezkabazy;
public Form4()
{
InitializeComponent();
path = "\\My documents\\";
textBox3.Text = path;
sciezkabazy = "";
login = "";
textBox2.Text = "";
}
private void menuItem3_Click(object sender, EventArgs e)
{
if (textBox12.Text == "" || textBox3.Text == "")
{
if (textBox12.Text == "")
MessageBox.Show("Podaj nazwe bazy");
if (textBox3.Text == "")
MessageBox.Show("Podaj lokalizacje bazy");
}
else
{
baza = textBox12.Text;
path = textBox3.Text;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
sciezkabazy = path + baza + ".sdf";
// login = textBox4.Text;
haslo = textBox2.Text;
// textBox4.Text = sciezkabazy;
if (System.IO.File.Exists(sciezkabazy))
{
MessageBox.Show("Baza o nazwie " + baza + " juz istnieje!!! \n Podaj inna nazwe");
}
else
{
System.Data.SqlServerCe.SqlCeEngine SQLEngine;
SQLEngine = new SqlCeEngine("DataSource=" + sciezkabazy + ";password=" + haslo + ""); //password=<myPassword>
SQLEngine.CreateDatabase();
wyswietl wys = new wyswietl();
wys.Show();
textBox12.Text = file_dialog.sciezka;
textBox3.Text = sciezkabazy;
// MessageBoxButtons.OK();//"Utworzyłem baze o nazwie " + sciezkabazy);
MessageBox.Show("Utworzyłem baze o nazwie " + sciezkabazy);
this.Close();
}
}
}
private void menuItem4_Click(object sender, EventArgs e)
{
Form1 form = new Form1();
form.ShowDialog();
}
}
}
nie widze zeby bylo tutaj cos nie tak . tak jak pisalem wyzej na wczesniejszych romach wszytsko dzialalo ale kiedy uzywam programu dalej i otiweram jakies okno to czasami znika to menu a znika za kazdym razem gdy wejde do jaiegos okna i je zamkne. pozatym gdy uzywam programu task manager widoczne sa 2 okna: menu , oraz 2 jak zrobic zeby bylo tylko jedno?? uzyc showDialog - nic nie daje w przykladzie wyzej jest to samo.
i gdy tylko zamkne form1 wylacza mi sie caly program
np
otw.show();
this.close(); wszytsko sie wylacza
a gdy zrobie
otw.showdialog();
this.close() ; <- to sie wykonuje dopiero jak wroce do tego okna
jeszcze jedna sprawa - jak to mozliwe ze moje MENU - zwykle buttony (zadne obrazki) zabiera 1,5 mb ramu ??
-
sprawdź wersję CF.net, ja ostatnio miałem taki problem z aktualizowałem sobie frameworka do SP2 i próbowałem odpalić program na komputerze z SP1, być może powinieneś zaktualizować CF.net do nowszej wersji.
Ja niestety mam dostęp do wm 6.0 i jak narazie wszystkie kontrolki działają.
-
ja pisalem progrma w cf.net 2.0 . a na telefonie nie wiem moze juz jest 3,7 i dlatego nie dziala ? nie mam pojecia a ajk to sie sprawdz na telefonie w rejestrze??
i jeszcze jedno co trzeb austawic zeby program dziala tylko na pockecie a nie na pockecie i windowsie - mysle ze stad bierze sie to 1,5 mb zjedzonego ramu przy 4 buttonach :( a program mozna normalnie odpalic w xp
-
ja pisalem progrma w cf.net 2.0 . a na telefonie nie wiem moze juz jest 3,7 i dlatego nie dziala ? nie mam pojecia a ajk to sie sprawdz na telefonie w rejestrze??
CF .net 1.x, 2.x, 3.x to oddzielne rodziny - i albo piszesz w 1.x lub 2.x albo 3.x i nie są kompatybilne w dół.
Przynajmniej tak jest na dużym bracie PC, i pamiętaj o podwersjach frameworków to też ważne.
-
otw.show();
this.close(); wszytsko sie wylacza
a gdy zrobie
otw.showdialog();
this.close() ; <- to sie wykonuje dopiero jak wroce do tego okna
jeszcze jedna sprawa - jak to mozliwe ze moje MENU - zwykle buttony (zadne obrazki) zabiera 1,5 mb ramu ??
Czy znane Ci jest pojęcie modalności? showdialog wywołuje modalny dialog i sterownie powinno wrócić dopiero po zakończeniu dialogu. Tak jest w starym WINAPI i przmapowali to do net-u. Zachowanie jest normalne. Dodatkowo wywołując showdialog jego oknem-właścicielem jest bieżące aktywne okno. Może tu leży problem - spróbuj otwierać dialog z formy dlg.ShowDialog(this) czyniąc ojcem formę nadrzędną.
Aha w dokumentacji piszą, że zamknięcie frormy dialogu jej nie usuwa i trzeba robić to za pomocą dispose. Ja bym raczej polecał takie wyświetlanie modalnych dialogów tzn. w cyklu utwórz, wyświetl dialog, pobierz wynik, zniszcz formę dialogu.
Jeśli chodzi o te MB to normalne - za prostotą kodu stoi wielki framework.
No i link jeśli chcesz to przestudiować: http://msdn.microsoft.com/en-us/library/c7ykbedk.aspx (http://msdn.microsoft.com/en-us/library/c7ykbedk.aspx)
-
dziekuje bardzo za odpowwiedz . przestudiuje to na 100% ale pod wieczór a mam jeszcze jedno pytanie - czemu inne aplikacje napisane przez innych programisów zabieraja po ok 100 - 300kb cale aplikacje a moje menu oz 1,5 mb to jest bardzo duzo zwlaszcza gdy chce ktos odpalić program na starym aparacie ktore ialy po 32mb ?? program sam zajmuje na dysku 2- 3 mb + 2x 1,5 to jest 6mb.
-
Masz na myśli aplikacje pisane w netcf? Może faktycznie coś wrzucasz ekstra.. Jakieś dodatkowe kontrolki przykładowo? Nie mam na pulpicie Twojego całego projektu więc ciężko mi coś sensownego powiedzieć.
-
w bodajrze 3 poscie jest kod z form1 oraz form 2 kazdy zajmuje po 1,5 pamieci .
a jak zrobic zeby program otwieral sie tylko na pockecie?? u mnie na komputerze normalnie sie odpala a w innych programasz pisze ze nie ejst to aplikacja windos 32
-
Bardziej interesujące jest, co masz w projekcie włączone zamiast gołego kodu dwu form. Pojedyncza forma nie powinna tyle zajmować. Sam kod wirtualny na pewno jest dużo mniejszy.
Odnośnie detekcji platformy: http://blog.nerdbank.net/2006/09/platform-detection-i-how-to-detect-that.html (http://blog.nerdbank.net/2006/09/platform-detection-i-how-to-detect-that.html)
Na komputerze bez zainstalowanego net-u oczywiście Twoja aplikacja się nie odpali i wyskoczy komunikat jaki opisałeś.
-
juz sie obroniłem i zaczałem testowac rozne romy!
odkrylem ze na romie energy z buildem 21877 program dziala jak na pierwszym obrazku natomiast z buildem 28005 dziala bez problemu - wiec wina leży po stronie buildu (choc jest to dość dziwny) czy ktoś wie czym się różnia te buildy??