热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我的.NetCore3.0windows桌面程序界面绘制从.netframework复制代码法

今天想用.netcore做个小程序。却意外的发现没有可视化编辑器!!!(重要的事情用三个感叹号)虽然我搞了十多年的.net开发,但是我确实从来没有自己编辑过Designer.cs这

今天想用 .net core做个小程序。却意外的发现没有可视化编辑器!!!(重要的事情用三个感叹号)

虽然我搞了十多年的 .net 开发,但是我确实从来没有自己编辑过 Designer.cs 这个文件。微软不是不让我编辑么!

///


/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///

我于是去网上搜,结果,人家确实是编辑Designer.cs文件的。

不过,我还是想动一点小聪明,逃避学习编辑 Designer.cs 。我想到的办法很简单,就是先用老的Windows Form(.net framework)程序,可视化的绘制好界面,然后复制到新的 windows form (.net core)。

绘制 windows form ( .net framework )

《我的.Net Core 3.0 windows 桌面程序界面绘制 -- 从.net framework法》
我的目标是绘制一个下拉框Combobox, 一个文本框textbox, 两个按钮 Buttons。相信绝大多数人如果直接敲代码绘制这样一个简单的windows form,也要费半天劲。有了工具栏(Toolbox),就简单多了。

别忘了双击两个按钮,把事件也加上。

这四个控件的代码,分为四个部分。分别是变量声明部分,变量实例化部分,具体设置部分,添加控件部分。另外事件也要复制过去。

变量声明部分

既给Form四个属性(Property),分别对应四个控件。所以,这段代码肯定在class的下面。具体到Designer.cs文件里,它们位于最底部。

如下:

private System.Windows.Forms.TextBox srtFileTextBox;
private System.Windows.Forms.Button browseButton;
private System.Windows.Forms.Button okayButton;
private System.Windows.Forms.ComboBox tvShowComboBox;

找到Windows Forms(.net core)程序的对应部分,复制过去。

变量实例化部分

这部分位于InitializeComponent函数的最开头。

private void InitializeComponent()
{
this.srtFileTextBox = new System.Windows.Forms.TextBox();
this.browseButton = new System.Windows.Forms.Button();
this.okayButton = new System.Windows.Forms.Button();
this.tvShowComboBox = new System.Windows.Forms.ComboBox();

找到.net core的对应位置复制过去即可。

具体设置部分

这里具体设置控件的一些属性,最主要的是位置,大小等。

//
// srtFileTextBox
//
this.srtFileTextBox.Location = new System.Drawing.Point(12, 46);
this.srtFileTextBox.Name = "srtFileTextBox";
this.srtFileTextBox.Size = new System.Drawing.Size(392, 20);
this.srtFileTextBox.TabIndex = 0;
//
// browseButton
//
this.browseButton.Location = new System.Drawing.Point(410, 46);
this.browseButton.Name = "browseButton";
this.browseButton.Size = new System.Drawing.Size(75, 23);
this.browseButton.TabIndex = 1;
this.browseButton.Text = "Browse...";
this.browseButton.UseVisualStyleBackColor = true;
this.browseButton.Click += new System.EventHandler(this.BrowseButton_Click);
//
// okayButton
//
this.okayButton.Location = new System.Drawing.Point(224, 72);
this.okayButton.Name = "okayButton";
this.okayButton.Size = new System.Drawing.Size(75, 23);
this.okayButton.TabIndex = 2;
this.okayButton.Text = "Okay";
this.okayButton.UseVisualStyleBackColor = true;
this.okayButton.Click += new System.EventHandler(this.OkayButton_Click);
//
// tvShowComboBox
//
this.tvShowComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.tvShowComboBox.FormattingEnabled = true;
this.tvShowComboBox.Items.AddRange(new object[] {
"权力的游戏",
"纸牌屋",
"复仇者联盟"});
this.tvShowComboBox.Location = new System.Drawing.Point(12, 12);
this.tvShowComboBox.Name = "tvShowComboBox";
this.tvShowComboBox.Size = new System.Drawing.Size(473, 21);
this.tvShowComboBox.TabIndex = 3;

找到.net core的对应部分,替换即可。

添加控件部分

所以的控件,必须添加到相应的容器之中。像GroupBox, Panel这些都是容器。当然Windows Form本身也是容器。

《我的.Net Core 3.0 windows 桌面程序界面绘制 -- 从.net framework法》

这里的四个控件,都直接隶属于Windows Form控件。

找到.net core的对应代码替换之即可。

复制事件

把form.cs里面的事件复制到 .net core 的 form.cs即可。

private void BrowseButton_Click(object sender, EventArgs e)
{
}
private void OkayButton_Click(object sender, EventArgs e)
{
}
调整位置大小

我满心期待着成功,结果出来这么个玩意儿。

《我的.Net Core 3.0 windows 桌面程序界面绘制 -- 从.net framework法》
我研究了一下,原来是这行代码捣的鬼:

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(500, 109);

把它也复制过去,这下样式正常了。

《我的.Net Core 3.0 windows 桌面程序界面绘制 -- 从.net framework法》
看看是不是和.net framework 的windows form一样了。

编辑逻辑代码

这里我和以前一样,使用了一个OpenFileDialog,选择一个srt文件并处理。

private void BrowseButton_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDlg = new OpenFileDialog();
openFileDlg.Filter = "Subtitle files (*.srt)|*.srt";
if(openFileDlg.ShowDialog() ==DialogResult.OK )
{
srtFileTextBox.Text = openFileDlg.FileName;
}
}
private void OkayButton_Click(object sender, EventArgs e)
{
//do something
Application.Exit();
}
源代码

见Github

https://github.com/juwikuang/CreateNetCoreWindowsFormFromFramework


推荐阅读
  • 使用Echarts for Weixin 小程序实现中国地图及区域点击事件
    本文介绍了如何使用Echarts for Weixin在微信小程序中构建中国地图,并实现区域点击事件。包括效果展示、条件准备和逻辑实现的具体步骤。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 视觉Transformer综述
    本文综述了视觉Transformer在计算机视觉领域的应用,从原始Transformer出发,详细介绍了其在图像分类、目标检测和图像分割等任务中的最新进展。文章不仅涵盖了基础的Transformer架构,还深入探讨了各类增强版Transformer模型的设计思路和技术细节。 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 微信小程序开发指南:创建动态电影选座界面
    本文详细介绍如何在微信小程序中实现一个动态且可视化的电影选座组件,提高用户体验。通过合理的布局和交互设计,使用户能够轻松选择心仪的座位。 ... [详细]
  • FL Studio 20.8 中文版进阶教程及安装指南
    FL Studio 20.8 是目前最新版本的音乐制作软件,它能够将您的电脑转变为全面的音乐工作室,配备先进的制作工具,使您的音乐创作超越想象。本文将详细介绍FL Studio 20.8的安装步骤及中文语言切换方法。 ... [详细]
  • 大华股份2013届校园招聘软件算法类试题D卷
    一、填空题(共17题,每题3分,总共51分)1.设有inta5,*b,**c,执行语句c&b,b&a后,**c的值为________答:5 ... [详细]
  • NPM 脚本 'start' 退出,未显示 create-react-app 服务器正在监听请求
    遇到 NPM 脚本 'start' 退出且未显示 create-react-app 服务器正在监听请求的问题,请求帮助。 ... [详细]
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • 本文通过基准测试(Benchmark)对.NET Core环境下Thrift和HTTP客户端的微服务通信性能进行对比分析。基准测试是一种评估系统或组件性能的方法,通过运行一系列标准化的测试来衡量其表现。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 2022年2月 微信小程序 app.json 配置详解:启用调试模式
    本文将详细介绍如何在微信小程序的 app.json 文件中启用调试模式(debug),并通过实际案例展示其配置方法和应用场景。 ... [详细]
author-avatar
115路公交车_984
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有