1.如何真正的退出程式,而不是隐藏窗體?
Windows Mobile中當你點選X的時候,并不是真正的關閉窗體,而是隐藏窗體,需要在應用程式的每個Form中調用一個函數才可以。
private void InfoMain_Closed( object sender, EventArgs e)
{
Application.Exit();
}
每個窗體的Closed事件中加入Application.Exit();才能真正的退出程式。
2.如何讓窗體跟着輸入法視窗上移?
當輸入文字時需要打開輸入法,而當打開輸入法的時候輸入法會直接蓋掉下層的程式界面,導緻有時候窗體下方的控件無法進行操作(輸入文字,點選按鈕等),那麼這個時候就需要我們在輸入法狀态變更的時候出發一些事件,讓輸入法視窗不要蓋住程式。
首先每次建立Form,最好都先添加一個panel做控件的上層容器,設定好相對panel的位置,這樣控件才會根據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;
}
} 當輸入法打開的時候panel不再占據全屏,而是跟除了輸入法外的可視化範圍一樣高。輸入法關閉時,panel恢複占據全屏。當然panel的AutoScroll要設定為true。
3.如何建立非全屏Form?
首先需要你建立一個全屏的Form,然後将以下參數設定為指定值
ControlBox = false;
FormBorderStyle = none;
MinimizeBox = false;
WindowState = normal;
Size = 設定為你想要的大小即可。
這樣的非全屏窗體不帶邊框不帶标題,隻有一個光秃秃的Form。如果你需要那些邊框和标題使得界面更加美觀,則可以參考以下文章:
http://www.christec.co.nz/blog/archives/134
牽扯到了一些對底層的操作。
4. 【實用技巧】Windows Mobile 手機連接配接電腦時,如何使用GPRS上網,同時跟電腦保持連接配接。(USB和GPRS共存問題) (3-19 22:08)
5.如何提高Windows Mobile中 Http上傳檔案的穩定性?
其實上傳檔案最好還是用FTP,因為比較穩定,各方面也很成熟。如果是和業務系統相關的一些東西,也不要緊,用戶端上傳完成之後請求下服務端的一個服務,通知他業務資料上傳完畢,然後服務端去做一些操作,之後可以回應給用戶端就可以了。
但如果非要用HTTP的話,也不要緊,雖然無線網絡用HTTP傳輸檔案不是太穩定,但總體上還是不錯的,隻是你需要設計一套斷點續傳機制,來保證就算網絡發生異常了,也可以接着上次的再傳。除了使用斷點續傳機制,還有一個技巧,就是讓用戶端和服務端的連接配接逾時時間(ConnectionTimeout)盡可能的長些,比如設定為200秒,這是在開發過程中總結出來的,我測試過很多次,發現如果逾時時間很長的話,多數大檔案(> 500kb)其實一次就可以傳遞上去,之前傳不上去,多數是因為連接配接逾時,而服務端如果使用tomcat,抛出Socket read timeout異常之後,用戶端多數收不到,因為此時的用戶端還在朝Request中的Outputstream寫資料,還沒有走到request.GetResponse()這一步,這就造成了,用戶端發送完資料之後才知道用戶端異常了,浪費了很多流量,也降低了很多效率,大家可以注意一下。
6.如何建立GPRS連接配接?
移動:
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);
修改連接配接的優先級:
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.發起和斷開連接配接
這兩個方法需要另外兩個類的協助
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
{
}
}