最近有個 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 點擊右側小箭頭