电脑上的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 点击右侧小箭头