最近有个 pad 上的 APP 开发,听到 APP 这个词,而后就把它安排给我作了,但是那个 pad 装的是Windows系统,我是 Android 开发啊。json
无奈的我只能搞呗。如下不是专业的教程,只是本身学习的记录。不适合系统学习,适合快速上手。(如下内容也是百度的结果,若有错误,敬请指正)设计模式
IDE:Visual Studio (我用的是2019的)api
项目:Windows 窗体应用(.Net Framwork)网络
①打开From1,处于设计模式,左边会有个工具栏。展开全部 Windows 窗体,下面有控件。app
②没有工具箱,找到菜单栏 视图 >> 工具箱。工具
将控件拖到窗口中,右击属性,在右边能够看到对应的属性,点击属性下方会有属性说明,下方包括显示文本,背景,控件名称,显示位置等基本设置,能够进行拖动排放位置post
密码输入框,输入内容显示 *(如何想要显示 其余样式,能够自行设置)学习
>效果this
⭐打开属性,切换到闪电,下方有不少事件,找到Click 双击后面,自动生成点击事件并跳转到click方法spa
图标的显示模式,是否缩放,适应控件。
新建Form2:右击》》添加》》新建项》》窗体
找到按钮的对应的点击事件
private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(); form2.Show(); }
评论补充:花落心语
this.Close();
①在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 文件,运行就这个文件就能看到效果
①正常设计时,你觉得这样就占满了吗
②实际上效果
🌂解决方法(将Anchor属性的设置为 Top ,Left,Right)
④最后效果
因为这里有多个控件,咱们引入一个 panel 的控件,🐖这里要将其余控件拖动到这个 panel 控件中,若是选中 panel拖动是,其余控件跟着拖动就表明
控件在panel 的内部,再将panel Anchor属性设置为 None,点击黑色的方块能够去掉,这样很大的屏幕也会显示在屏幕中间。能够直接选中全部控件进行设置Anchor 为 None
写一个网络请求的帮助类
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可是每个窗体他们的宿主都是Windows,致使两个窗体能够平行显示,这个在手机APP咱们就不会遇到,若是在开启其余Form 把其余Form 给关闭,但 主入口窗体一旦关闭,全部窗体就都退出来了,目前还未解决。
下方来自大佬的评论解答:花落心语
我把APP显示设置成全屏显示,同时在应用运行时其余应用的显示层都在APP的下方致使看不到,此时我恰好在调试状态,致使我没法调用IDE的显示界面,让断点过去,同时个人APP在进入了断点,就没法操做状态。任务管理器也被遮挡。最终重启了电脑。⚡