電腦上的APP 從零開始 WinForm


  最近有個 pad 上的 APP 開發,聽到 APP 這個詞,然后就把它安排給我做了,可是那個 pad 裝的是Windows系統,我是 Android 開發啊。

  無奈的我只能搞唄。以下不是專業的教程,只是自己學習的記錄。不適合系統學習,適合快速上手。(以下內容也是百度的結果,如有錯誤,敬請指正)

  

一、我用什么IDE建什么樣的項目?

  IDE:Visual Studio (我用的是2019的)

  項目:Windows 窗體應用(.Net Framwork)

  

  

 

 二、如何畫界面,添加控件?

  ①打開From1,處於設計模式,左邊會有個工具欄。展開所有 Windows 窗體,下面有控件。

  

  ②沒有工具箱,找到菜單欄   視圖  >> 工具箱。

  

 

三、textview 顯示文本的控件 Label 的使用,如何設置控件的屬性?

  將控件拖到窗口中,右擊屬性,在右邊可以看到對應的屬性,點擊屬性下方會有屬性說明,下方包括顯示文本,背景,控件名稱,顯示位置等基本設置,可以進行拖動排放位置

  

   

   

 

四、editText 輸入框采用什么控件? TextBox 

  密碼輸入框,輸入內容顯示 *(如何想要顯示 其他樣式,可以自行設置)

>效果

 

五、如何設置點擊事件? Button 

  ⭐打開屬性,切換到閃電,下方有很多事件,找到Click 雙擊后面,自動生成點擊事件並跳轉到click方法

  

  

 

六、imageview對應的顯示圖標控件? PictureBox 

  圖標的顯示模式,是否縮放,適應控件。

 

 

 

 

 

 

七、登錄成功如何跳轉頁面?

  新建Form2:右擊》》添加》》新建項》》窗體

  找到按鈕的對應的點擊事件

    private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); }

  評論補充:花落心語

  

 

 八、如何關閉當前窗口?

this.Close();

 

 九、有多個窗口,如何設置應用主入口

  

 

十、如何像sharepreferences一樣保存本地數據(保存用戶名和密碼)

  ①在App.config中添加 

  <appSettings>
    <add key="userName" value="admin"/>
    <add key="userPwd" value="1"/>
  </appSettings>

  

 

   ②讀取存儲的值和修改存儲的值公共方法(可以發到工具類中)

 /// <summary>
        /// 更新設置 /// </summary>
        /// <param name="settingName"></param>
        /// <param name="valueName"></param>
        public static void UpdateSettingString(string settingName, string valueName) { Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); if (ConfigurationManager.AppSettings[settingName] != null) { config.AppSettings.Settings.Remove(settingName); } config.AppSettings.Settings.Add(settingName, valueName); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } /// <summary>
        /// 讀取設置 /// </summary>
        /// <param name="settingName"></param>
        /// <returns></returns>
        public static string GetSettingString(string settingName) { try { string settingString = ConfigurationManager.AppSettings[settingName].ToString(); return settingString; } catch (Exception) { return null; } }

 

  🌂調用方法讀取修改

//讀取用戶名
GetSettingString("userName") 
//修改用戶名
UpdateSettingString("userName", {{新的用戶名}});

 

十一、如何設置窗口全屏顯示?(把這個代碼放在頁面加載的方法中)

  this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized;

 

十二、如何把做的效果在別的電腦上顯示?(這里可能是調試)

  在文件資源管理器中打開文件夾,找到 bin 文件找到 debug,將真個debug文件夾拷貝到其他電腦上,debug里面有一個 .exe 文件,運行就這個文件就能看到效果

  

   

    

   

 

十三、如何讓控件橫向充滿屏幕 (match_prarent)

  ①正常設計時,你以為這樣就占滿了嗎

  

  ②實際上效果  

 

   🌂解決方法(將Anchor屬性的設置為 Top ,Left,Right)

 

 

   ④最后效果

 

十四、可以看到全屏之后原先登錄退出,輸入框按鈕放在中間位置也不在中間位置了,那么如何將控件顯示到屏幕中間?

  由於這里有多個控件,我們引入一個 panel 的控件,🐖這里要將其他控件拖動到這個 panel 控件中,如果選中 panel拖動是,其他控件跟着拖動就代表

 

控件在panel 的內部,再將panel Anchor屬性設置為 None,點擊黑色的方塊可以去掉,這樣很大的屏幕也會顯示在屏幕中間。可以直接選中所有控件進行設置Anchor 為 None

  

 

 

 

 

十五、如何進行網絡請求?HttpClient

  寫一個網絡請求的幫助類

class HttpHelper { //TCP/IP 3次握手 //第1個參數是請求類型,第2個參數是API方法名,第3個參數是傳送的對象
        public static string GetAPIData(string requestType, string actionname, Dictionary<string, string> obj = null) { //實例化HttpClient
            HttpClient hc = new HttpClient(); //設置API地址
            hc.BaseAddress = new Uri("http://"+ShareUtils.getNetIp()+":"+ShareUtils.getNetPort()+"/api/default/"); //創建一個任務獲取服務端返回的結果;
            Task<HttpResponseMessage> task = null; //第1次握手發送請求
            HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(obj)); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); switch (requestType) { case "get": task = hc.GetAsync(actionname); break; case "post": task = hc.PostAsync(actionname, httpContent); break; case "put": task = hc.PostAsync(actionname, new FormUrlEncodedContent(obj)); break; case "delete": task = hc.DeleteAsync(actionname); break; } task.Wait(); //第2次握手 接收數據
            if (task != null) { //第3次握手 檢查數據包
                if (task.Result.IsSuccessStatusCode) { //把XML轉換為字符串
                    var strtask = task.Result.Content.ReadAsStringAsync(); strtask.Wait(); //轉換結果
                    return strtask.Result; } } return ""; } }

⭐這里也是網上找的,然后修改了一下,請求類型不同,寫法上應該有點區別 這里是 content_type 為 application/json ,如果content-type為form表單提交可以直接使用  FormUrlEncodedContent 

 

十六、輸入框獲取焦點?

editText.Focus();

 

十七、【未解決問題】一個APP但是多個窗體共存

  🐖雖然是一個APP但是每一個窗體他們的宿主都是Windows,導致兩個窗體可以平行顯示,這個在手機APP我們就不會遇到,如果在開啟其他Form 把其他Form 給關閉,但 主入口窗體一旦關閉,所有窗體就都退出來了,目前還未解決。

下方來自大佬的評論解答:花落心語

  

 

 

十八、【遇到的尷尬】遮擋在其他應用上方

  我把APP顯示設置成全屏顯示,同時在應用運行時其他應用的顯示層都在APP的下方導致看不到,此時我剛好在調試狀態,導致我無法調用IDE的顯示界面,讓斷點過去,同時我的APP在進入了斷點,就無法操作狀態。任務管理器也被遮擋。最終重啟了電腦。⚡

 

十九、下拉框如何綁定數據  ComboBox

 

 

 comboBox.DataSource = jarray; //數組
 comboBox.ValueMember = "code"; //value值
 comboBox.DisplayMember = "code"; //顯示值

 

 

 

二十、表格綁定數據如何只綁定設置的列數據 DataGrid

 dataGridView.AutoGenerateColumns = false; //設置是否根據數據自動填充列,默認為true,將根據數據自動填充列數據
 dataGridView.DataSource = jarray;//數組數據

 表格如果關閉編輯模式

 

 點擊dataGrid 點擊右側小箭頭

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM