.Net Micro Framework研究—窗体控件

简介:   试验平台:.Net Micro Framework 模拟器 在Microsoft.SPOT.Presentation.Controls命名空间里,也就如下几个控件(姑且称为控件吧),Panel、StackPanel、Text、TextFlow、Image、ListBox、ScrollViewer 其中仅有Panel、Text、Image控件完成度相对较好,其他的实现并不完整,甚至只是一个空接口。

 

试验平台:.Net Micro Framework 模拟器

 

Microsoft.SPOT.Presentation.Controls命名空间里,也就如下几个控件(姑且称为控件吧),PanelStackPanelTextTextFlowImageListBoxScrollViewer 其中仅有PanelTextImage控件完成度相对较好,其他的实现并不完整,甚至只是一个空接口。

下面是测试代码:

using System;

using Microsoft.SPOT;

using Microsoft.SPOT.Input;

using Microsoft.SPOT.Presentation;

using Microsoft.SPOT.Presentation.Controls;

using Microsoft.SPOT.Presentation.Media;

using Microsoft.SPOT.Presentation.Shapes;

 

namespace MFWindow

{

    public class Program : Microsoft.SPOT.Application

    {

        public static void Main()

        {  

            //创建窗体

            WindowsDrawing win = new WindowsDrawing();         

            //程序运行

            new Program().Run(win);

        }

       

        internal sealed class WindowsDrawing : Window

        {

            public  WindowsDrawing()

            {

                this.Width = SystemMetrics.ScreenWidth;

                this.Height = SystemMetrics.ScreenHeight;

 

                //可设置显示方向(水平,垂直)

                //StackPanel panel = new StackPanel(Orientation.Vertical);

                StackPanel panel = new StackPanel(Orientation.Horizontal);

               

                //设置对象堆叠的方式

                panel.HorizontalAlignment = HorizontalAlignment.Left;

                panel.VerticalAlignment = VerticalAlignment.Top;                          

                this.Child = panel;

 

                //Text控件

                Text txt = new Text(Resources.GetFont(Resources.FontResources.small), "yefan");

                txt.Width = 100;

                txt.Height = 30;

                txt.ForeColor = Colors.Green;    

                panel.Children.Add(txt);

 

                //TextFlow控件 不支持滚动条,实现还不完整

                TextFlow txtf = new TextFlow();

                txtf.ScrollingStyle = ScrollingStyle.LineByLine;

                txtf.TextAlignment = TextAlignment.Left;

                txtf.Height = 200;

                txtf.Width = 50;

            

                for (int i = 0; i < 10; i++)

                {

                    txtf.TextRuns.Add(new TextRun("yefan123", Resources.GetFont(Resources.FontResources.small), Colors.Blue));

                    //注意:换行这么写,可不是/r/n

                    txtf.TextRuns.Add(TextRun.EndOfLine);

                    txtf.TextRuns.Add(new TextRun("yefan456", Resources.GetFont(Resources.FontResources.small), Colors.Red));

                    txtf.TextRuns.Add(TextRun.EndOfLine);

                    txtf.TextRuns.Add(new TextRun("yefan789", Resources.GetFont(Resources.FontResources.small), Colors.Green));

                    txtf.TextRuns.Add(TextRun.EndOfLine);

                }

                panel.Children.Add(txtf);         

 

                //image

                Image img = new Image();

                img.Bitmap = Resources.GetBitmap(Resources.BitmapResources.yfmvp);

                panel.Children.Add(img);

 

                //ListBox  仅实现了一个空接口

                ListBox lst = new ListBox();

                lst.Font = Resources.GetFont(Resources.FontResources.small);

                lst.Items.Add(new ListBoxItem());

                //panel.Children.Add(lst);

 

                //ScrollViewer 仅实现了一个空接口

                ScrollViewer sv = new ScrollViewer();

                sv.Width = 30;

                sv.Height = 50;

                //panel.Children.Add(sv);      

                //sv.Child = txtf;               

            }

        }

    }

}

目前版本的MFTCP协议栈支持也并不完善(对串口也谈不上完善,毕竟不支持奇偶校验、停止位设置),Digi的以太网口是加入了自己的处理方案,明年二月份微软将要发布的MF V3.0版,就已经完全支持TCP了,到时候MF最理想的应用也许就是通信转换了。

从本篇内容中可以看出,微软MF之旅尚在出发点不远的地方,MF研发人员任重而道远啊!

相关文章
|
2月前
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
49 1
|
4月前
|
开发框架 JavaScript 前端开发
震撼!破解 ASP.NET 服务器控件 Button 执行顺序之谜,颠覆你的开发认知!
【8月更文挑战第16天】在ASP.NET开发中,通过Button控件实现先执行JavaScript再触后台处理的需求十分常见。例如,在用户点击按钮前需前端验证或提示,确保操作无误后再传递数据至后台深度处理。此过程可通过设置Button的`OnClientClick`属性调用自定义JavaScript函数完成验证;若验证通过,则继续触发后台事件。此外,结合jQuery也能达到相同效果,利用`__doPostBack`手动触发服务器端事件。这种方式增强了应用的交互性和用户体验。
50 8
|
2月前
|
开发框架 缓存 监控
NET Framework 到 .NET 5/6 的迁移是重大的升级
本文详细介绍了从 .NET Framework 4.8 迁移到 .NET 5/6 的过程,通过具体案例分析了迁移策略与最佳实践,包括技术栈评估、代码迁移、依赖项更新及数据库访问层的调整,强调了分阶段迁移、保持代码可维护性及性能监控的重要性。
58 3
|
2月前
|
机器学习/深度学习 编解码 算法
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
《nnU-Net: 自适应框架用于基于U-Net的医学图像分割》是一篇2018年的论文,发表在Nature上。该研究提出了一种自适应的医学图像分割框架nnU-Net,能够自动调整模型的超参数以适应不同的数据集。通过2D和3D U-Net及级联U-Net的组合,nnU-Net在10个医学分割数据集上取得了卓越的性能,无需手动调整。该方法强调数据增强、预处理和训练策略等技巧,为医学图像分割提供了一个强大的解决方案。
82 0
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
|
2月前
|
开发者 Windows
.NET 开源扁平化、美观的 C/S 控件库
【10月更文挑战第23天】介绍了三款适用于 .NET 平台的开源扁平化、美观的 C/S 控件库:MaterialSkin 采用 Google Material Design 风格,适合现代感界面;Krypton Toolkit 提供丰富控件,界面易于定制;Fluent Ribbon Control Suite 模仿 Office 界面,适合复杂功能应用。每款控件库均附有示例代码及 GitHub 链接。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
2月前
|
C# Android开发 iOS开发
一组.NET MAUI绘制的开源控件 - AlohaKit
一组.NET MAUI绘制的开源控件 - AlohaKit
|
3月前
|
开发框架 JavaScript 前端开发
|
4月前
|
开发框架 缓存 前端开发
实战.NET Framework 迁移到 .NET 5/6
从.NET Framework 迁移到.NET 5/6 是一次重要的技术革新,涵盖开发环境与应用架构的全面升级。本文通过具体案例详细解析迁移流程,包括评估现有应用、利用.NET Portability Analyzer 工具识别可移植代码、创建新项目、逐步迁移代码及处理依赖项更新等关键步骤。特别关注命名空间调整、JSON 序列化工具更换及数据库访问层重构等内容,旨在帮助开发者掌握最佳实践,确保迁移过程平稳高效,同时提升应用性能与可维护性。
146 2
|
4月前
|
开发框架 JSON 监控
实战指南:从 .NET Framework 迁移到 .NET 5/6 的策略与最佳实践
【8月更文挑战第28天】从 .NET Framework 迁移到 .NET 5/6 是一次重要的技术升级,涉及开发环境与应用架构的改进。本文通过具体案例分析,介绍迁移策略与最佳实践,帮助开发者顺利完成转变。
88 1