1.如何真正的退出程序,而不是隱藏窗體?
Windows Mobile中當(dāng)你點(diǎn)擊X的時(shí)候,并不是真正的關(guān)閉窗體,而是隱藏窗體,需要在應(yīng)用程序的每個(gè)Form中調(diào)用一個(gè)函數(shù)才可以。
private void InfoMain_Closed(object sender, EventArgs e)

{
Application.Exit();
}
每個(gè)窗體的Closed事件中加入Application.Exit();才能真正的退出程序。
2.如何讓窗體跟著輸入法窗口上移?
當(dāng)輸入文字時(shí)需要打開輸入法,而當(dāng)打開輸入法的時(shí)候輸入法會(huì)直接蓋掉下層的程序界面,導(dǎo)致有時(shí)候窗體下方的控件無法進(jìn)行操作(輸入文字,點(diǎn)擊按鈕等),那么這個(gè)時(shí)候就需要我們在輸入法狀態(tài)變更的時(shí)候出發(fā)一些事件,讓輸入法窗口不要蓋住程序。
首先每次創(chuàng)建Form,最好都先添加一個(gè)panel做控件的上層容器,設(shè)定好相對(duì)panel的位置,這樣控件才會(huì)根據(jù)panel的變化而變化。之后給InputPanel的EnabledChanged事件加入下面的代碼:
private void inputPanel1_EnabledChanged(object sender, EventArgs e)

{
if (inputPanel1.Enabled)

{
this.panel1.Dock = DockStyle.None;
this.panel1.Height = inputPanel1.VisibleDesktop.Height;
}
else

{
this.panel1.Dock = DockStyle.Fill;
}
}
當(dāng)輸入法打開的時(shí)候panel不再占據(jù)全屏,而是跟除了輸入法外的可視化范圍一樣高。輸入法關(guān)閉時(shí),panel恢復(fù)占據(jù)全屏。當(dāng)然panel的AutoScroll要設(shè)定為true。
3.如何創(chuàng)建非全屏Form?
首先需要你創(chuàng)建一個(gè)全屏的Form,然后將以下參數(shù)設(shè)定為指定值
ControlBox = false;
FormBorderStyle = none;
MinimizeBox = false;
WindowState = normal;
Size = 設(shè)置為你想要的大小即可。
這樣的非全屏窗體不帶邊框不帶標(biāo)題,只有一個(gè)光禿禿的Form。如果你需要那些邊框和標(biāo)題使得界面更加美觀,則可以參考以下文章:
http://www.christec.co.nz/blog/archives/134
牽扯到了一些對(duì)底層的操作。
4.【實(shí)用技巧】Windows Mobile 手機(jī)連接電腦時(shí),如何使用GPRS上網(wǎng),同時(shí)跟電腦保持連接。(USB和GPRS共存問題) (3-19 22:08)
5.如何提高Windows Mobile中 Http上傳文件的穩(wěn)定性?
其實(shí)上傳文件最好還是用FTP,因?yàn)楸容^穩(wěn)定,各方面也很成熟。如果是和業(yè)務(wù)系統(tǒng)相關(guān)的一些東西,也不要緊,客戶端上傳完成之后請(qǐng)求下服務(wù)端的一個(gè)服務(wù),通知他業(yè)務(wù)數(shù)據(jù)上傳完畢,然后服務(wù)端去做一些操作,之后可以回應(yīng)給客戶端就可以了。
但如果非要用HTTP的話,也不要緊,雖然無線網(wǎng)絡(luò)用HTTP傳輸文件不是太穩(wěn)定,但總體上還是不錯(cuò)的,只是你需要設(shè)計(jì)一套斷點(diǎn)續(xù)傳機(jī)制,來保證就算網(wǎng)絡(luò)發(fā)生異常了,也可以接著上次的再傳。除了使用斷點(diǎn)續(xù)傳機(jī)制,還有一個(gè)技巧,就是讓客戶端和服務(wù)端的連接超時(shí)時(shí)間(ConnectionTimeout)盡可能的長些,比如設(shè)置為200秒,這是在開發(fā)過程中總結(jié)出來的,我測試過很多次,發(fā)現(xiàn)如果超時(shí)時(shí)間很長的話,多數(shù)大文件(> 500kb)其實(shí)一次就可以傳遞上去,之前傳不上去,多數(shù)是因?yàn)檫B接超時(shí),而服務(wù)端如果使用tomcat,拋出Socket read timeout異常之后,客戶端多數(shù)收不到,因?yàn)榇藭r(shí)的客戶端還在朝Request中的Outputstream寫數(shù)據(jù),還沒有走到request.GetResponse()這一步,這就造成了,客戶端發(fā)送完數(shù)據(jù)之后才知道客戶端異常了,浪費(fèi)了很多流量,也降低了很多效率,大家可以注意一下。
6.如何建立GPRS連接?
移動(dòng):
XmlDocument configDoc = new XmlDocument();
configDoc.LoadXml(
"<wap-provisioningdoc>" +
"<characteristic type=\"CM_GPRSEntries\">" +
"<characteristic type=\"xxx\">" +
"<parm name=\"DestId\" value=\"{ADB0B001-10B5-3F39-27C6-9742E785FCD4}\" />" +
"<parm name=\"UserName\" value=\"1\" />" +
"<parm name=\"Password\" value=\"1\" />" +
"<parm name=\"Domain\" value=\"\" />" +
"<characteristic type=\"DevSpecificCellular\">" +
"<parm name=\"GPRSInfoValid\" value=\"1\" />" +
"<parm name=\"GPRSInfoAccessPointName\" value=\"xx.js\" />" +
"</characteristic>" +
"</characteristic>" +
"</characteristic>" +
"</wap-provisioningdoc>"
);
ConfigurationManager.ProcessConfiguration(configDoc, false);
電信:
XmlDocument configDoc = new XmlDocument();
configDoc.LoadXml(
"<wap-provisioningdoc>" +
"<characteristic type=\"CM_GPRSEntries\">" +
"<characteristic type=\"jsmsa\">" +
"<parm name=\"DestId\" value=\"{ADB0B001-10B5-3F39-27C6-9742E785FCD4}\" />" +
"<parm name=\"UserName\" value=\"xxxx.js\" />" +
"<parm name=\"Password\" value=\"xxxx\" />" +
"<parm name=\"Domain\" value=\"\" />" +
"<parm name=\"Phone\" value=\"#777\"/>" +
"<parm name=\"DeviceType\" value=\"modem\"/>" +
"<parm name=\"DeviceName\" value=\"Cellular Line\"/>" +
"<parm name=\"Enabled\" value=\"1\"/>" +
"<parm name=\"RequirePw\" value=\"1\"/>" +
"<parm name=\"DeviceSpecificRAW\" value=\"b4010000b4010000b4010000010000000f0000000100000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"/>" +
"</characteristic>" +
"</characteristic>" +
"</wap-provisioningdoc>"
);
ConfigurationManager.ProcessConfiguration(configDoc, false);
修改連接的優(yōu)先級(jí):
string configpreferred = " <wap-provisioningdoc> " +
" <characteristic type=\"cm_planner\"> " +
" <characteristic type=\"preferredconnections\"> " +
" <parm name=\"{ADB0B001-10B5-3F39-27C6-9742E785FCD4}\" value=\"jsmsa\" /> " +
" </characteristic> " +
" </characteristic> " +
" </wap-provisioningdoc> ";
7.發(fā)起和斷開連接
這兩個(gè)方法需要另外
兩個(gè)類的協(xié)助
public static void MakeConnection()
{
try
{
ConnectionManager connectManager = new ConnectionManager();
int idx = -1;
List<ConnectionManager.CONNMGR_DESTINATION_INFO> lstIdentifiers = connectManager.EnumConnDestinations();
for (int i = 0; i < lstIdentifiers.Count; i++)
{
if ("Internet 連接".Equals(lstIdentifiers[i].Description))
{
idx = i;
break;
}
}
if (idx > -1)
{
connectManager.EstablishConnection((uint)idx);
}
}
catch
{
}
}
public static void Disconnect()
{
try
{
RASManager.RASCONN[] conns = RASManager.GetRASConnections();
if (conns != null && conns.Length > 0)
{
foreach (RASManager.RASCONN conn in conns)
{
try
{
RASManager.HangUp(conn.hRasConnHandle);
}
catch (Exception ex)
{
}
}
}
}
catch
{
}
}
---------------------------------------------------------
專注移動(dòng)開發(fā)
Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
posted on 2008-10-07 13:02
TiGERTiAN 閱讀(1806)
評(píng)論(0) 編輯 收藏 所屬分類:
DotNet 、
Windows Mobile