隨筆-348  評論-598  文章-0  trackbacks-0

          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
                      {
                      }
                  }



          ---------------------------------------------------------
          專注移動開發

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2008-10-07 13:02 TiGERTiAN 閱讀(1815) 評論(0)  編輯  收藏 所屬分類: DotNetWindows Mobile
          主站蜘蛛池模板: 凌源市| 赞皇县| 静海县| 留坝县| 克什克腾旗| 濉溪县| 东丰县| 怀安县| 张家港市| 神木县| 正镶白旗| 九寨沟县| 巴林右旗| 长垣县| 普洱| 肇州县| 林口县| 丰县| 闸北区| 芦溪县| 新竹县| 彰化市| 清涧县| 郧西县| 慈利县| 无棣县| 清流县| 兰考县| 宝应县| 墨竹工卡县| 侯马市| 江安县| 扎兰屯市| 定日县| 广德县| 盐池县| 金华市| 鸡泽县| 厦门市| 枞阳县| 上蔡县|