Two Days wpf 分享 分页组件

迟来的wpf分享。

目录

一、序言

二、前期准备

 三、前端界面

四、后台代码部分

1、先定义些变量后面使用

2、先是按钮事件代码。

首页按钮

上一页按钮

下一页按钮

末尾按钮

画每页显示等数据

每页显示多少条

判断是否为数字的事件

分页数字的点击触发事件

跳转到多少页

3、泛型数据集合

设置页面多少

4、DataTable数据类型的

5、用户组件初始化

五、效果技术用方法

使用方法

效果

总结


一、序言

这里使用的工具是VS2019,.net版本使用的是4.5版本。素材插件使用的是materialDesign。分享是随缘更新

二、前期准备

1、现在Nuget里安装MaterialDesignColors,MaterialDesignThemes两个插件包。

2、在App.xaml文件里更改成下面代码部分

<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml" /><!--<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Dark.xaml" />--><ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /><ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" /><ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" /><!--<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Blue.xaml" />--><ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Blue.xaml"/></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>

3、在所需要使用的界面里引用materialDesign,在这个位置添加如下代码:

 xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"

 三、前端界面

        前期工作做好了,开始写前端。这里写的是用户组件

前端代码如下:

<UserControl x:Class="ComponentLibrary.WPF.UserControls.PagingTUserControl"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:ComponentLibrary.WPF.UserControls"mc:Ignorable="d" ><Grid><Border CornerRadius="3" Background="Transparent" BorderBrush="{x:Null}"><Grid HorizontalAlignment="Stretch" Margin="5 0 5 0" VerticalAlignment="Top" Width="Auto" Height="30"><Grid.ColumnDefinitions><ColumnDefinition Width="150"/><ColumnDefinition Width="150"/><ColumnDefinition Width="auto" MinWidth="500"/></Grid.ColumnDefinitions><Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Label Content="每页显示:" HorizontalAlignment="Right"/><ComboBox x:Name="comInt" PreviewMouseDown="comInt_PreviewMouseDown" Grid.Column="1"/></Grid><TextBlock Name="tbkRecords" Grid.Column="1" Foreground="White" Style="{StaticResource PageTextBlock1}" /><StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Column="2"><Grid><Grid.RowDefinitions ><RowDefinition Height="50"></RowDefinition></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="50"/><ColumnDefinition Width="50"/><ColumnDefinition Width="*"/><ColumnDefinition Width="50"/><ColumnDefinition Width="50"/><ColumnDefinition Width="50"/><ColumnDefinition Width="30"/></Grid.ColumnDefinitions><TextBlock Grid.Column="0" Name="btnFirst" Text="首页"  IsEnabled="False" Style="{StaticResource FancyTextBlockStyle2}" /><TextBlock Grid.Column="1" Name="btnPrev" Text="上一个" IsEnabled="False" Style="{StaticResource FancyTextBlockStyle2}" /><Grid Grid.Column="2" Name="grid" ><Grid.RowDefinitions><RowDefinition Height="30" ></RowDefinition></Grid.RowDefinitions></Grid><TextBlock Grid.Column="3" x:Name="btnNext" Text="下一个" IsEnabled="False" Style="{StaticResource FancyTextBlockStyle2}" /><TextBlock Grid.Column="4" x:Name="btnLast"  Text="未页" IsEnabled="False" Style="{StaticResource FancyTextBlockStyle2}"/><TextBox Grid.Column="5" x:Name="pageGo" Visibility="Collapsed" MaxLength="6" IsReadOnly="True" Style="{StaticResource PageTextBox}" /><Button Grid.Column="6" x:Name="btnGo" Visibility="Collapsed" Content="GO" IsEnabled="False" Style="{StaticResource PageButton}" /></Grid></StackPanel></Grid></Border></Grid>
</UserControl>

 这是它的一个原型。

四、后台代码部分

 这里后台写了两种数据模式一个是泛型数据类型,一个是DataTable数据类型。两种下面代码会逐一分享给大家。

1、先定义些变量后面使用

private DataTable _dt = new DataTable();        
/// <summary>/// 每页显示多少条/// </summary>private int pageNum = 10;/// <summary>/// 当前是第几页/// </summary>private int pIndex = 1;/// <summary>/// 对象/// </summary>private DataGrid grdList;/// <summary>/// 最大页数/// </summary>private int MaxIndex = 1;/// <summary>/// 一共多少条/// </summary>private int allNum = 0;/// <summary>/// 声明一个泛型对象接受数据./// </summary>private List<object> obj;

2、先是按钮事件代码。

首页按钮

#region 首页/// <summary>/// 首页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnFirst_Click(object sender, System.EventArgs e){this.pIndex = 1;ReadLsitT();}/// <summary>/// 首页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnFirst_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){e.Handled = true;}#endregion

上一页按钮

 #region 上一页/// <summary>/// 上一页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPrev_Click(object sender, System.EventArgs e){if (this.pIndex <= 1)return;this.pIndex--;ReadLsitT();}/// <summary>/// 上一页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnPrev_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){e.Handled = true;}#endregion

下一页按钮

 #region 下一页/// <summary>/// 下一页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnNext_Click(object sender, System.EventArgs e){if (this.pIndex >= this.MaxIndex)return;this.pIndex++;ReadLsitT();}/// <summary>/// 下一页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnNext_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){e.Handled = true;}#endregion

末尾按钮

 #region 未页/// <summary>/// 未页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnLast_Click(object sender, System.EventArgs e){this.pIndex = this.MaxIndex;ReadLsitT();}/// <summary>/// 未页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnLast_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){e.Handled = true;}#endregion

画每页显示等数据

 #region 画每页显示等数据/// <summary>/// 画每页显示等数据/// </summary>private void DisplayPagingInfo(){if (this.pIndex == 1){this.btnPrev.IsEnabled = false;this.btnFirst.IsEnabled = false;}else{this.btnPrev.IsEnabled = true;this.btnFirst.IsEnabled = true;}if (this.pIndex == this.MaxIndex){this.btnNext.IsEnabled = false;this.btnLast.IsEnabled = false;}else{this.btnNext.IsEnabled = true;this.btnLast.IsEnabled = true;}this.tbkRecords.Text = string.Format("每页{0}条/共{1}条", this.pageNum, this.allNum);int first = (this.pIndex - 4) > 0 ? (this.pIndex - 4) : 1;int last = (first + 9) > this.MaxIndex ? this.MaxIndex : (first + 9);this.grid.Children.Clear();for (int i = first; i <= last; i++){ColumnDefinition cdf = new ColumnDefinition();this.grid.ColumnDefinitions.Add(cdf);TextBlock tbl = new TextBlock();tbl.Text = i.ToString();tbl.Style = FindResource("FancyTextBlockStyle3") as Style;tbl.MouseLeftButtonUp += new MouseButtonEventHandler(tbl_MouseLeftButtonUp);tbl.MouseLeftButtonDown += new MouseButtonEventHandler(tbl_MouseLeftButtonDown);if (i == this.pIndex)tbl.IsEnabled = false;Grid.SetColumn(tbl, this.grid.ColumnDefinitions.Count - 1);Grid.SetRow(tbl, 0);this.grid.Children.Add(tbl);}}#endregion

每页显示多少条

   #region 每页显示多少条.private void comInt_PreviewMouseDown(object sender, MouseButtonEventArgs e){// 获取点击的 ComboBoxItemComboBoxItem clickedItem = FindAncestor<ComboBoxItem>((DependencyObject)e.OriginalSource);if (clickedItem != null){// 获取点击项的内容(显示的文本)string clickedText = clickedItem.Content.ToString();this.pageNum = int.Parse(clickedText);SetMaxIndexList();ReadLsitT();}}/// <summary>/// 鼠标点击到combobox选项事件./// </summary>/// <typeparam name="T"></typeparam>/// <param name="current"></param>/// <returns></returns>private T FindAncestor<T>(DependencyObject current) where T : DependencyObject{do{if (current is T ancestor){return ancestor;}current = VisualTreeHelper.GetParent(current);}while (current != null);return null;}#endregion

判断是否为数字的事件

 private static Regex RegNumber = new Regex("^[0-9]+$");#region 判断是否是数字/// <summary>/// 判断是否是数字/// </summary>/// <param name="valString"></param>/// <returns></returns>public static bool IsNumber(string valString){Match m = RegNumber.Match(valString);return m.Success;}#endregion

分页数字的点击触发事件

  #region 分页数字的点击触发事件private void tbl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){TextBlock tbl = sender as TextBlock;if (tbl == null)return;int index = int.Parse(tbl.Text.ToString());this.pIndex = index;if (index > this.MaxIndex)this.pIndex = this.MaxIndex;if (index < 1)this.pIndex = 1;ReadLsitT();}void tbl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){e.Handled = true;}#endregion

跳转到多少页

  #region 跳转到多少页/// <summary>/// 跳转到多少页/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnGo_Click(object sender, RoutedEventArgs e){if (IsNumber(this.pageGo.Text)){int pageNum = int.Parse(this.pageGo.Text);if (pageNum > 0 && pageNum <= this.MaxIndex){this.pIndex = pageNum;ReadLsitT();}else if (pageNum > this.MaxIndex){this.pIndex = this.MaxIndex;ReadLsitT();}}this.pageGo.Text = "";}#endregion

3、泛型数据集合

 /// <summary>/// 定义一个泛型来接受数据/// </summary>/// <typeparam name="T"></typeparam>/// <param name="parameter"></param>/// <returns></returns>public void GenericMethod<T>(List<T> parameter){var data = parameter;obj = parameter.Cast<object>().ToList();}#region  返回泛型集合/// <summary>/// 初始化数据./// </summary>/// <typeparam name="T">对象</typeparam>/// <param name="dataGrid">数据展示表格</param>/// <param name="parameter">泛型</param>/// <param name="Num">数量</param>public void ShowPageT<T>(DataGrid dataGrid, List<T> parameter, int Num){if (parameter == null || parameter.Count == 0)return;if (parameter.Count == 0)return;this.grdList = dataGrid;this.pageNum = Num;this.pIndex = 1;obj = parameter.Cast<object>().ToList();SetMaxIndexList();ReadLsitT();if (this.MaxIndex > 1){this.pageGo.IsReadOnly = false;this.btnGo.IsEnabled = true;}}/// <summary>/// 画数据/// </summary>public void ReadLsitT(){try{int first = this.pageNum * (this.pIndex - 1);first = (first > 0) ? first : 0;this.grdList.ItemsSource = obj.Skip((this.pIndex - 1) * pageNum).Take(pageNum);}catch{MessageBox.Show("错误");}finally{DisplayPagingInfo();}}#endregion

上述的GenericMethod方法已经我这里没用使用你们可以参考使用扩展。

设置页面多少

#region 设置最多大页面/// <summary>/// 设置最多大页面/// </summary>public void SetMaxIndexList(){//多少页int Pages = this.obj.Count / pageNum;if (this.obj.Count != (Pages * pageNum)){if (this.obj.Count < (Pages * pageNum))Pages--;elsePages++;}this.MaxIndex = Pages;this.allNum = this.obj.Count;}#endregion

4、DataTable数据类型的

 #region 初始化数据/// <summary>/// 初始化数据datatable类型/// </summary>/// <param name="grd"></param>/// <param name="dtt"></param>/// <param name="Num"></param>public void ShowPages(DataGrid grd, DataTable ds,int ss){if (ds == null || ds.Rows.Count == 0)return;if (ds.Rows.Count == 0)return;ds.DefaultView.Sort = "Date DESC";DataTable dt = ds.DefaultView.ToTable();this._dt = dt.Clone();this.grdList = grd;//this.pageNum = Num;this.pIndex = 1;foreach (DataRow r in dt.Rows)this._dt.ImportRow(r);SetMaxIndex();ReadDataTable();if (this.MaxIndex > 1){this.pageGo.IsReadOnly = false;this.btnGo.IsEnabled = true;}}    #endregion#region 画数据/// <summary>/// 画数据/// </summary>private void ReadDataTable(){try{DataTable tmpTable = new DataTable();tmpTable = this._dt.Clone();int first = this.pageNum * (this.pIndex - 1);first = (first > 0) ? first : 0;//如果总数量大于每页显示数量if (this._dt.Rows.Count >= this.pageNum * this.pIndex){for (int i = first; i < pageNum * this.pIndex; i++)tmpTable.ImportRow(this._dt.Rows[i]);}else{for (int i = first; i < this._dt.Rows.Count; i++)tmpTable.ImportRow(this._dt.Rows[i]);}this.grdList.ItemsSource = tmpTable.DefaultView;tmpTable.Dispose();}catch{MessageBox.Show("错误");}finally{DisplayPagingInfo();}}#endregion

5、用户组件初始化

 this.Loaded += delegate{//首页this.btnFirst.MouseLeftButtonUp += new MouseButtonEventHandler(btnFirst_Click);this.btnFirst.MouseLeftButtonDown += new MouseButtonEventHandler(btnFirst_MouseLeftButtonDown);//上一页this.btnPrev.MouseLeftButtonUp += new MouseButtonEventHandler(btnPrev_Click);this.btnPrev.MouseLeftButtonDown += new MouseButtonEventHandler(btnPrev_MouseLeftButtonDown);//下一页this.btnNext.MouseLeftButtonUp += new MouseButtonEventHandler(btnNext_Click);this.btnNext.MouseLeftButtonDown += new MouseButtonEventHandler(btnNext_MouseLeftButtonDown);//末页this.btnLast.MouseLeftButtonUp += new MouseButtonEventHandler(btnLast_Click);this.btnLast.MouseLeftButtonDown += new MouseButtonEventHandler(btnLast_MouseLeftButtonDown);this.btnGo.Click += new RoutedEventHandler(btnGo_Click);};

五、效果及使用方法

使用方法

这是我只展示泛型的使用方法

public void LogData(){try{LogDal logDal = new LogDal();GlobalVariable.GlobalLog = logDal.QueryById<LogTable>().OrderByDescending(m => m.Date).ToList();this.Page.ShowPage1(this.logDataGrid, GlobalVariable.GlobalLog, 20); //这里是调用设置分页的函数}catch (Exception ex){throw ex;}}

只需要把你数据源和数据显示datagrid传递过去即可,填写一个默认的每页显示的条数。

 别忘了引用你的用户组卷目录。

效果

总结

到此分享结束,源代码都在文章中简单整理即可使用。分享及随缘,下次什么时候分享看缘分吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIP——OSPF基础

OSPF基础 一、OSPF基础二、OSPF的区域划分三、OSPF的数据包hello包数据库描述包DBD包链路状态请求包LSR包链路状态更新包LSU包链路状态确认包LSAck包 四、OSPF的状态机五、OSPF的工作过程六、链路状态型的路由生成过程七、条件匹配五、OSPF数据包头部八、OSPF的接口网络类型 一…

链动2+1系统开发模式有没有风险?

现在的分销模式层出不穷&#xff0c;很多人都不知道分销与传销的区别&#xff0c;甚至认为最近很火的一个分销模式链动21也是个传销盘。那么&#xff0c;链动21模式究竟涉不涉传&#xff1f;有没有风险呢&#xff1f;下面就来具体说一下。 首先分销不是传销&#xff0c;分销是商…

(css)列表点击前后样式

(css)列表点击前后样式 效果&#xff1a; html <ul v-show"rightOne" class"one-content"><liv-for"(item,index) in exampleList":key"index"click"searchHandle(item,index)"class"liClass":class&qu…

MySQL函数讲解(谓词、CASE)

目录 MySQL常见函数 字符串函数 进行字符串操作的函数 算术函数 进行数值计算的函数 日期函数 进行日期操作的函数 转换函数 进行数据类型和值转换的函数 流程函数 进行条件删选 聚合函数 进行数据聚合的函数 谓词 一般用于条件判断 什么是函数 函数指一段可以直接被…

【C++】-多态的语法细节详解

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

GPT-3.5:ChatGPT的奇妙之处和革命性进步

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

苹果开发“Apple GPT”AI科技迎来新格局

根据彭博社的马克・古尔曼&#xff08;Mark Gurman&#xff09;报道&#xff0c;苹果内部正在开发“Apple GPT”人工智能项目&#xff0c;足以媲美 OpenAI 的 ChatGPT &#xff0c;预计明年推出。就在彭博社消息发出之后&#xff0c;苹果股价上涨了2.3%&#xff0c;市值顶峰时增…

题目4 命令执行(保姆级教程)

url&#xff1a;http://192.168.154.253:84/ #打开http://XXX:81/&#xff0c;XXX为靶机的ip地址 审题 1、打开题目看到有一个提示&#xff0c;此题目需要通过利用命令执行漏洞执行Linux命令获取webshell&#xff0c;最后从根目录下key.php文件中获得flag 2、开始答题 第一步&…

css设置八等分圆

现需要上图样式的布局&#xff0c;我通过两张向右方的图片&#xff0c;通过定位和旋转完成了布局。 问题&#xff1a; 由于是通过旋转获取到的样式&#xff0c;实际的盒子是一个长方形&#xff0c;当鼠标移入对应的箭头时选中的可能是其他盒子&#xff0c;如第一张设计稿可以看…

Ngrok 的绝佳替代品,内网穿透神器 Serveo

什么是 Serveo Serveo 是一个免费的内网穿透服务&#xff0c;Serveo 可以将本地计算机暴露在互联网上&#xff0c;官方声称其为 Ngrok 的绝佳替代品。 Serveo 其最大优点是使用现有的 SSH 客户端&#xff0c;无需安装任何客户端软件即可完成端口转发。 Serveo 工作原理很简单…

解密数字孪生:解决实际问题的神奇技术

数字孪生是一种将现实世界与数字世界相连接的创新技术&#xff0c;通过将实际物体或系统的数据和行为模拟到数字平台上&#xff0c;实现真实与虚拟之间的交互和信息共享。数字孪生的应用不仅仅局限于虚拟现实&#xff08;VR&#xff09;和仿真领域&#xff0c;它在解决实际问题…

泰晓科技发布 Linux Lab v1.2 正式版

导读近日消息&#xff0c;Linux Lab 是一套用于 Linux 内核学习、开发和测试的即时实验室&#xff0c;官方称其“可以极速搭建和使用&#xff0c;功能强大&#xff0c;用法简单”。 自去年 12 月份发布 Linux Lab v1.1 后&#xff0c;v1.2 正式版目前已经发布于 GitHub 及 Gite…

为什么 Linux 内核协议栈会丢弃 SYN 数据包

最近了解到 SYN 数据包丢弃的问题&#xff0c;网上有一些资料&#xff0c;这里记录分享一下。 serverfault上的重要信息 tcp - No SYN-ACK Packet from server - Server Fault 信息如下&#xff1a; My embedded system with LwIP is the client and I have server1 and ser…

文艺类《匠心》简介及投稿要求

文艺类《匠心》简介及投稿要求 《匠心》期刊简介&#xff1a; 主管单位&#xff1a;内蒙古画报社 主办单位&#xff1a;内蒙古画报社 国际刊号&#xff1a;ISSN:1672-9099 国内刊号&#xff1a;CN:15-1383/J 发行周期&#xff1a;月刊;收录网站&#xff1a;中国知网收录 …

LiveGBS流媒体平台GB/T28181常见问题-TOKEN有效期是多久如何设置token有效期StreamToken和URLToken

LiveGBS中TOKEN有效期是多久如何设置token有效期StreamToken和URLToken 1、获取TOKEN2、TOKEN有效期3、默认token有效期3、自定义token加密key3.1、token_key3.2、stream_token_key 4、如何配置一直有效的token4.1、URLToken4.2、StreamToken 5、动态有效期6、流地址鉴权开启后…

git的使用

git使用 Git操作基本指令&#xff1a;分支操作&#xff1a;操作远程仓库&#xff1a;文件操作比较文件差异删除文件撤销文件重命名文件 操作标签SSH密钥git错误示例1、git status&#xff08;或任何其他git命令&#xff09;然后会出现fatal: Not a git repository (or any of t…

智能管理轻松搞定!文件批量改名并按数量平均分类,自动新建文件夹保存!

我们面对大量文件需要整理和管理时&#xff0c;批量改名和分类是一项繁琐而重要的任务。为了帮助您高效完成这项工作&#xff0c;我们介绍了一种智能方法&#xff1a;按数量平均分类并自动保存文件&#xff0c;让您轻松整理文件夹内容。 首先第一步&#xff0c;我们要进入文件…

swift简单弹幕例子,仿哔哩哔哩

先看例子 每个弹幕的速度都是不一样的&#xff0c;支持弹幕整体开始暂停。 如果弹幕实在是太多了&#xff0c;有个缓冲队列&#xff0c;不停的重试能否显示&#xff0c;保证文字都能显示全&#xff0c;并且每条都能显示。 实现是基于 CADisplayLink 实现的&#xff0c;如此来…

工业以太网的发展历程与应用前景

工业以太网是在工业自动化和物联网领域广泛使用的通信网络&#xff0c;它具有应用广泛、价格低廉、通信速率高、软硬件产品丰富、应用支持技术成熟等优点&#xff0c;目前它已经在工业企业综合自动化系统中的资源管理层、执行制造层得到了广泛应用&#xff0c;并呈现向下延伸直…

Verilog 学习之路(三)——牛客刷题篇

1.输入序列连续的序列检测 题面 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJH9kHFH-1690301233803)(https://s2.loli.net/2023/07/26/HJPXR2mhbaVCG6d.png)]思路 对于序列检测题目&#xff0c;常规的解法有两种&#xff1a;状态机法和序列缓存…