电脑上的APP 从零开始 WinForm

  最近有个 pad 上的 APP 开发,听到 APP 这个词,而后就把它安排给我作了,但是那个 pad 装的是Windows系统,我是 Android 开发啊。json

  无奈的我只能搞呗。如下不是专业的教程,只是本身学习的记录。不适合系统学习,适合快速上手。(如下内容也是百度的结果,若有错误,敬请指正)设计模式

  

1、我用什么IDE建什么样的项目?

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

  项目:Windows 窗体应用(.Net Framwork)网络

  

  

 

 2、如何画界面,添加控件?

  ①打开From1,处于设计模式,左边会有个工具栏。展开全部 Windows 窗体,下面有控件。app

  

  ②没有工具箱,找到菜单栏   视图  >> 工具箱。工具

  

 

3、textview 显示文本的控件 Label 的使用,如何设置控件的属性?

  将控件拖到窗口中,右击属性,在右边能够看到对应的属性,点击属性下方会有属性说明,下方包括显示文本,背景,控件名称,显示位置等基本设置,能够进行拖动排放位置post

  

   

   

 

4、editText 输入框采用什么控件? TextBox 

  密码输入框,输入内容显示 *(如何想要显示 其余样式,能够自行设置)学习

>效果this

 

5、如何设置点击事件? Button 

  ⭐打开属性,切换到闪电,下方有不少事件,找到Click 双击后面,自动生成点击事件并跳转到click方法spa

  

  

 

6、imageview对应的显示图标控件? PictureBox 

  图标的显示模式,是否缩放,适应控件。

 

 

 

 

 

 

7、登陆成功如何跳转页面?

  新建Form2:右击》》添加》》新建项》》窗体

  找到按钮的对应的点击事件

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

  评论补充:花落心语

  

 

 8、如何关闭当前窗口?

this.Close();

 

 9、有多个窗口,如何设置应用主入口

  

 

10、如何像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", {{新的用户名}});

 

11、如何设置窗口全屏显示?(把这个代码放在页面加载的方法中)

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

 

12、如何把作的效果在别的电脑上显示?(这里多是调试)

  在文件资源管理器中打开文件夹,找到 bin 文件找到 debug,将真个debug文件夹拷贝到其余电脑上,debug里面有一个 .exe 文件,运行就这个文件就能看到效果

  

   

    

   

 

十3、如何让控件横向充满屏幕 (match_prarent)

  ①正常设计时,你觉得这样就占满了吗

  

  ②实际上效果  

 

   🌂解决方法(将Anchor属性的设置为 Top ,Left,Right)

 

 

   ④最后效果

 

十4、能够看到全屏以后原先登陆退出,输入框按钮放在中间位置也不在中间位置了,那么如何将控件显示到屏幕中间?

  因为这里有多个控件,咱们引入一个 panel 的控件,🐖这里要将其余控件拖动到这个 panel 控件中,若是选中 panel拖动是,其余控件跟着拖动就表明

 

控件在panel 的内部,再将panel Anchor属性设置为 None,点击黑色的方块能够去掉,这样很大的屏幕也会显示在屏幕中间。能够直接选中全部控件进行设置Anchor 为 None

  

 

 

 

 

十5、如何进行网络请求?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 

 

十6、输入框获取焦点?

editText.Focus();

 

十7、【未解决问题】一个APP可是多个窗体共存

  🐖虽然是一个APP可是每个窗体他们的宿主都是Windows,致使两个窗体能够平行显示,这个在手机APP咱们就不会遇到,若是在开启其余Form 把其余Form 给关闭,但 主入口窗体一旦关闭,全部窗体就都退出来了,目前还未解决。

下方来自大佬的评论解答:花落心语

  

 

 

十8、【遇到的尴尬】遮挡在其余应用上方

  我把APP显示设置成全屏显示,同时在应用运行时其余应用的显示层都在APP的下方致使看不到,此时我恰好在调试状态,致使我没法调用IDE的显示界面,让断点过去,同时个人APP在进入了断点,就没法操做状态。任务管理器也被遮挡。最终重启了电脑。⚡

相关文章
相关标签/搜索