【博主推荐】C#的winfrom应用中datagridview常见问题及解决方案汇总

news2024/11/27 10:55:18

在这里插入图片描述

在这里插入图片描述

文章目录

  • 1.datagridview绘制出现鼠标悬浮数据变空白
  • 2.datagridview在每列前动态添加序号
    • 2.1 加载数据集完成后绘制序号
    • 2.2 RowPostPaint事件绘制
  • 3.datagridview改变行样式
  • 4.datagridview后台修改指定列数据
  • 5.datagridview固定某个列宽
  • 6.datagridview某个列的显示隐藏
  • 7.datagridview获取选中的值
  • 8.清空datagridview的几种方式
  • 9.datagridview单击双击事件
  • 10.datagridview获取编辑文本框
  • 11.datagridview绘制按钮
  • 万套模板,程序开发,在线开发,在线沟通
  • 优质资源分享

作者:xcLeigh
文章地址:https://blog.csdn.net/weixin_43151418/article/details/143602659


【博主推荐】C#的winfrom应用中datagridview常见问题及解决方案汇总,datagridview绘制出现鼠标悬浮数据变空白;datagridview在每列前动态添加序号;datagridview改变行样式;datagridview后台修改指定列数据;datagridview固定某个列宽;datagridview某个列的显示隐藏;datagridview获取选中的值;清空datagridview的几种方式;datagridview单击双击事件;datagridview绘制按钮;datagridview获取编辑文本框等datagridview常见问题及解决方案汇总。让你快速了解并使用datagridview。

注:dgvData为datagridview的name

1.datagridview绘制出现鼠标悬浮数据变空白

        加载完数据后,执行完成函数。

//修改单元格后执行这两个,避免窗体更新的数据不显示
dgvData.EndEdit();
dgvData.Refresh();

2.datagridview在每列前动态添加序号

在C#中,给DataGridView赋值并加上序号通常涉及到创建一个新的列来显示行号。这个新列不会存在于实体类中,而是在数据绑定之后动态添加。这样避免实体类或者数据填充时候发生冲突,导致程序崩溃。这里写的方法兼容所有的数据填充方法,欢迎提出讨论。

2.1 加载数据集完成后绘制序号

// 假设你有一个已经填充数据的DataGridView
dgvData.DataSource = GetData(); // 这是你的实体类方法,或者数据填充的方法,兼容任何填充姓氏

// 添加行号列
if (dgvData.Columns[0].HeaderText != "序号") { //避免重复添加
    DataGridViewTextBoxColumn rowNumberColumn = new DataGridViewTextBoxColumn();
    rowNumberColumn.HeaderText = "序号";
    rowNumberColumn.ValueType = typeof(int);
    rowNumberColumn.Name = "RowNumber";
    rowNumberColumn.ReadOnly = true; // 确保行号列不可编辑
    rowNumberColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
    rowNumberColumn.Width= 80;
    // 添加行号列到DataGridView
    dgvData.Columns.Insert(0, rowNumberColumn); // 将其插入到第一列位置
}

2.2 RowPostPaint事件绘制

private void dgvData_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
    // 获取DataGridView对象引用
    DataGridView dgv = sender as DataGridView;

    // 在单元格的内容上方绘制行号
    int rowIndex = e.RowIndex;
    SolidBrush brush = new SolidBrush(dgv.RowHeadersDefaultCellStyle.ForeColor);
    e.Graphics.DrawString((rowIndex + 1).ToString(), dgv.DefaultCellStyle.Font, brush, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 4);
    brush.Dispose();
}

3.datagridview改变行样式

  • 可以根据自己的需求改自定义的文字颜色,背景颜色
 // 假设我们要改变第一列的文字颜色
 if (e.ColumnIndex == 1)// && e.Value != null
 {
     // 设置文字颜色为红色
     e.CellStyle.ForeColor = Color.Red;
     e.CellStyle.BackColor = Color.White;
 }

4.datagridview后台修改指定列数据

 // 确保指定的列存在
 if (dgvData.Columns["字段名"] != null)
 {
     // 设置指定行指定列的值
     dgvData.Rows[i].Cells["字段名"].Value = "新的值";
 }
 
 //修改单元格后执行这两个,避免窗体更新的数据不显示
 dgvData.EndEdit();
 dgvData.Refresh();

5.datagridview固定某个列宽

dgvData.DataSource = null; //填充前先置为空
// 填充数据
dgvData.DataSource = list;
dgvData.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.None; //设置列宽大小自定义
dgvData.Columns[1].Width = 80; // 你想要设置的固定宽度

6.datagridview某个列的显示隐藏

//窗体初始化的时候配置
dgvData.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dgvData.MultiSelect = true; // 允许多选
dgvData.EditMode = DataGridViewEditMode.EditOnEnter;

//赋值的时候设置
dgvData.Columns["Id"].HeaderText = "Id";
dgvData.Columns["name"].HeaderText = "名称";
dgvData.Columns[0].Visible = false; //隐藏某个列
dgvData.Columns[1].ReadOnly = true;//设置只读

7.datagridview获取选中的值

//窗体初始化配置,选择是选择整行,还是单个单元格
dgvData.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

//数据处理时,获取选中数据
for (int i = 0; i < dgvData.SelectedRows.Count; i++)
{
   string xzz = dgvData.SelectedRows[i].Cells["字段名"].Value;
}

//设置选中值
// selectedRowIndex选中的索引
dgvData.Rows[selectedRowIndex].Selected = true;

8.清空datagridview的几种方式

  • 一行一行的清除
try
{
    while (this.dgv_log.Rows.Count != 0)
    {
        this.dgv_log.Rows.RemoveAt(0);
    }
}
catch (Exception)
{
}
  • 清空所有
dgvData.DataSource = null;
dgvData.Columns.Clear();
dgvData.Rows.Clear();

9.datagridview单击双击事件

在这里插入图片描述

  • 单击事件-CellClick
private void dgvData_CellClick(object sender, DataGridViewCellEventArgs e)
{
    // 确定点击的是否为行头(如果不关心可以去掉下面的判断)
    if (e.RowIndex >= 0 && !dgv_log.Rows[e.RowIndex].IsNewRow) // 确保点击的不是新行
    {
        // 点击的是数据行
        DataGridViewRow row = dgv_log.Rows[e.RowIndex];
        // 执行您需要的操作
        // 例如: MessageBox.Show("行点击: " + row.Cells[1].Value.ToString());
    }
}
  • 双击事件-CellDoubleClick
private void dgvData_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    // 确定点击的是否为行头(如果不关心可以去掉下面的判断)
    if (e.RowIndex >= 0 && !dgv_log.Rows[e.RowIndex].IsNewRow) // 确保点击的不是新行
    {
        // 点击的是数据行
        DataGridViewRow row = dgv_log.Rows[e.RowIndex];
        // 执行您需要的操作
        // 例如: MessageBox.Show("行点击: " + row.Cells[1].Value.ToString());
    }
}

10.datagridview获取编辑文本框

  • 方式1,获取指定字段的值
	dgvData.Rows[这里是索引].Cells["实体字段""].Value  //获取选中的值
  • 方式2,获取选中的值
for (int i = 0; i < dgv_Data.SelectedRows.Count; i++)
{
	dgvData.SelectedRows[i].Cells["实体字段"].Value  //获取选中的值
}
  • 方式3,获取全部的值
for (int i = 0; i < dgv_Data.Rows.Count; i++) {
    dgvData.Rows[i].Cells["实体字段""].Value  //获取选中的值
}

11.datagridview绘制按钮

        datagridview绘制按钮,加CellPainting事件,绘制按钮,CellMouseClick事件,加入单击事件。

  • CellPainting事件
private void dgvData_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
        if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
        {
            if (this.dgvData.Columns[e.ColumnIndex].Name == "要绘制按钮的实体字段")
            {
                StringFormat sf = StringFormat.GenericDefault.Clone() as StringFormat;//设置重绘入单元格的字体样式
                sf.FormatFlags = StringFormatFlags.DisplayFormatControl;
                sf.Alignment = StringAlignment.Center;
                sf.LineAlignment = StringAlignment.Center;
                sf.Trimming = StringTrimming.EllipsisCharacter;

                e.PaintBackground(e.CellBounds, true);//重绘边框

                //设置要写入字体的大小
                System.Drawing.Font myFont = new System.Drawing.Font("华文中宋", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                SizeF sizeDel = e.Graphics.MeasureString("按1", myFont);
                SizeF sizeMod = e.Graphics.MeasureString("按2", myFont);

                float fDel = sizeDel.Width / (sizeDel.Width + sizeMod.Width); //
                float fMod = sizeMod.Width / (sizeDel.Width + sizeMod.Width);

                //设置每个“按钮的边界”
                RectangleF rectDel = new RectangleF(e.CellBounds.Left + 4, e.CellBounds.Top + 4, e.CellBounds.Width * fDel - 8, e.CellBounds.Height - 8);
                RectangleF rectMod = new RectangleF(rectDel.Right + 4, e.CellBounds.Top + 4, e.CellBounds.Width * fMod - 8, e.CellBounds.Height - 8);
                // 绘制边框
                using (Pen pen = new Pen(Color.OrangeRed))
                {
                    e.Graphics.DrawRectangle(pen, rectDel);
                }
                // 绘制边框
                using (Pen pen = new Pen(Color.OrangeRed))
                {
                    e.Graphics.DrawRectangle(pen, rectMod);
                }
                RectangleF rectDel1 = new RectangleF(e.CellBounds.Left, e.CellBounds.Top + 6, e.CellBounds.Width * fDel, e.CellBounds.Height - 6);
                RectangleF rectMod1 = new RectangleF(rectDel.Right, e.CellBounds.Top + 6, e.CellBounds.Width * fMod, e.CellBounds.Height - 6);
                e.Graphics.DrawString("按1", myFont, Brushes.Red, rectDel1, sf); //绘制“按钮”
                e.Graphics.DrawString("按2", myFont, Brushes.Green, rectMod1, sf);


                e.Handled = true;
            }
        }
}
  • CellMouseClick事件
private void dgvData_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
        if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
        {
            Point curPosition = e.Location;//当前鼠标在当前单元格中的坐标
            if (this.dgv_Data.Columns[e.ColumnIndex].Name == "Data_time")
            {
                Graphics g = this.dgv_Data.CreateGraphics();
                System.Drawing.Font myFont = new System.Drawing.Font("华文中宋", 9F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
                SizeF sizeDel = g.MeasureString("控1", myFont);
                SizeF sizeMod = g.MeasureString("控2", myFont);
                float fDel = sizeDel.Width / (sizeDel.Width + sizeMod.Width);
                float fMod = sizeMod.Width / (sizeDel.Width + sizeMod.Width);
                Rectangle rectTotal = new Rectangle(0, 0, this.dgv_Data.Columns[e.ColumnIndex].Width, this.dgv_Data.Rows[e.RowIndex].Height);
                RectangleF rectDel = new RectangleF(rectTotal.Left, rectTotal.Top, rectTotal.Width * fDel, rectTotal.Height);
                RectangleF rectMod = new RectangleF(rectDel.Right, rectTotal.Top, rectTotal.Width * fMod, rectTotal.Height);
                //判断当前鼠标在哪个“按钮”范围内
                if (rectDel.Contains(curPosition))//控1
                {
                    string str = dgv_Data.Rows[e.RowIndex].Cells[1].Value.ToString();
                    //UIMessageBox.Show(str);
                   
                        // 获取选中行的ID
                        if (dgv_Data.SelectedRows.Count > 0)
                        {
                            ShowWarningTip("执行操作!");
                        }
                        else
                        {
                            ShowWarningTip("没有选中操作数据!");
                        }
                }
                else if (rectMod.Contains(curPosition))//控2
                {
                    string str = dgvData.Rows[e.RowIndex].Cells[1].Value.ToString();
                    //UIMessageBox.Show(str);
                   // 获取选中行的ID
                        if (dgv_Data.SelectedRows.Count > 0)
                        {
                            ShowWarningTip("执行操作!");
                        }
                        else
                        {
                            ShowWarningTip("没有选中操作数据!");
                        }
                }
            }
        }
}
--------------- 业精于勤,荒于嬉 ---------------
 

请添加图片描述

--------------- 行成于思,毁于随 ---------------

万套模板,程序开发,在线开发,在线沟通

  • 专业后端大佬在线沟通需求开发
  • 专业前端大佬在线沟通需求开发
  • 专业网站整套大佬在线沟通需求开发
  • 专业毕业设计大佬在线沟通需求开发
  • 专业大作业大佬在线沟通需求开发
  • 【优惠活动】专属定制,程序在线开发

优质资源分享

🧡🧡🧡🧡🤍 【百篇源码模板】html5各行各业官网模板源码下载(1)

🧡🧡🧡🧡🤍 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

🧡🧡🧡🤍🤍 【VUE系列】VUE3实现个人网站模板源码

🧡🧡🧡🤍🤍 【HTML源码】HTML5小游戏源码

🧡🧡🧡🧡🤍 【博主推荐】JAVA SSM框架的后台管理系统(附源码)

🧡🧡🧡🧡🤍 【博主推荐】SpringBoot API接口对数据库增删改查,路由,TOKEN,WebSocket完整版(附源码)

🧡🧡🧡🧡🤍 【博主推荐】HTML制作一个美观的个人简介网页(附源码)

🧡🧡🧡🧡🤍 【博主推荐】html好看的个人简历网页版(附源码)

🧡🧡🧡🧡🤍 【博主推荐】html好看的个人主页(附源码)

🧡🧡🧡🧡🤍 【博主推荐】html好看的邀请函(附源码)

🧡🧡🧡🧡🤍 【博主推荐】html好看的音乐播放器(附源码)

🧡🧡🧡🧡🤍 【博主推荐】html好看的拼图小游戏(附源码)

🧡🧡🧡🧡🧡 【博主推荐】html界面绘制SVG图形(附源码)

🧡🧡🧡🧡🤍 【博主推荐】html操作SVG图(附源码)

🧡🧡🧡🧡🤍 【博主推荐】html下拉框树形(附好看的登录界面)

🧡🧡🧡🧡🤍 【博主推荐】HTML5响应式手机WEB(附源码)

🧡🧡🧡🧡🤍 【博主推荐】大数据可视化大屏(源码下载)

🧡🧡🧡🧡🧡 【博主推荐】html引用百度地图定位闪烁弹框树形(附源码)

🧡🧡🧡🧡🤍 【博主推荐】HTML酷炫动画表白求爱界面(附源码)


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/143602659(防止抄袭,原文地址不可删除)

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

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

相关文章

AI智能体崛起:从“工具”到“助手”的进化之路

目录 AI智能体的崛起 AI智能体的定义与决策模型 AI智能体的特点与优势 AI智能体的应用与类型 面临的挑战 未来展望 近年来&#xff0c;人工智能领域的焦点正从传统的聊天机器人&#xff08;Chat Bot&#xff09;快速转向更具潜力的AI智能体&#xff08;AI Agent&#xff…

【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写

&#x1f30e; 应用层自定义协议与序列化 文章目录&#xff1a; Tcp协议Socket编程 应用层简介 序列化和反序列化       重新理解read/write/recv/send及tcp的全双工       Socket封装       服务器端改写 &#x1f680;应用层简介 我们程序员写的一个个解决…

鸿蒙动画开发07——粒子动画

1、概 述 粒子动画是在一定范围内随机生成的大量粒子产生运动而组成的动画。 动画元素是一个个粒子&#xff0c;这些粒子可以是圆点、图片。我们可以通过对粒子在颜色、透明度、大小、速度、加速度、自旋角度等维度变化做动画&#xff0c;来营造一种氛围感&#xff0c;比如下…

C语言学习 12(指针学习1)

一.内存和地址 1.内存 在讲内存和地址之前&#xff0c;我们想有个⽣活中的案例&#xff1a; 假设有⼀栋宿舍楼&#xff0c;把你放在楼⾥&#xff0c;楼上有100个房间&#xff0c;但是房间没有编号&#xff0c;你的⼀个朋友来找你玩&#xff0c;如果想找到你&#xff0c;就得挨…

【pyspark学习从入门到精通19】机器学习库_2

目录 估计器 分类 回归 聚类 管道 估计器 估计器可以被看作是需要估算的统计模型&#xff0c;以便对您的观测值进行预测或分类。 如果从抽象的 Estimator 类派生&#xff0c;新模型必须实现 .fit(...) 方法&#xff0c;该方法根据在 DataFrame 中找到的数据以及一些默认或…

结构方程模型(SEM)入门到精通:lavaan VS piecewiseSEM、全局估计/局域估计;潜变量分析、复合变量分析、贝叶斯SEM在生态学领域应用

目录 第一章 夯实基础 R/Rstudio简介及入门 第二章 结构方程模型&#xff08;SEM&#xff09;介绍 第三章 R语言SEM分析入门&#xff1a;lavaan VS piecewiseSEM 第四章 SEM全局估计&#xff08;lavaan&#xff09;在生态学领域高阶应用 第五章 SEM潜变量分析在生态学领域…

JQuery -- 第九课

文章目录 前言一、JQuery是什么&#xff1f;二、JQuery的使用步骤1.引入2.书写位置3. 表示方法 三、JQuery选择器1.层级选择器2. 筛选选择器3. 排他思想4. 精品展示 四、jQuery样式操作1. 修改样式2.类操作1. 添加2. 移除3. 切换 五、jQuery动画1. 显示和隐藏2. 滑动1. slide2.…

无人机探测:光电侦测核心技术算法详解!

核心技术 双光谱探测跟踪&#xff1a; 可见光成像技术&#xff1a;利用无人机表面反射的自然光或主动光源照射下的反射光&#xff0c;通过高灵敏度相机捕捉图像。该技术适用于日间晴朗天气下的无人机探测&#xff0c;具有直观、易于识别目标的特点。 红外成像技术&#xff1…

Java使用replaceAll替换时不使用正则表达式

前言 public String replaceAll(String regex, String replacement) {return Pattern.compile(regex).matcher(this).replaceAll(replacement);}在使用String.replaceAll() 方法时&#xff0c;由于入参时regex &#xff0c;而入参刚好是正则表达式的字符该怎么办&#xff1f;我…

计算机毕业设计Hadoop+Spark音乐推荐系统 音乐预测系统 音乐可视化大屏 音乐爬虫 HDFS hive数据仓库 机器学习 深度学习 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

途普科技企业知识中台完成华为昇思MindSpore技术认证

近日&#xff0c;北京途普科技有限公司&#xff08;以下简称“途普科技”&#xff09;作为华为昇腾大模型方向的应用软件伙伴&#xff0c;核心产品企业知识中台已成功与华为AI框架昇思MindSpore完成相互兼容性认证。这一成就标志着途普科技在AI领域与华为的合作进一步加深&…

自由学习记录(25)

只要有修改&#xff0c;子表就不用元表的参数了&#xff0c;用自己的参数&#xff08;只不过和元表里的那个同名&#xff09; 子表用__index“继承”了父表的值&#xff0c;此时子表仍然是空表 一定是创建这样一个同名的变量在原本空空的子表里&#xff0c; 传参要传具体的变…

【Nginx】核心概念与安装配置解释

文章目录 1. 概述2. 核心概念2.1.Http服务器2.2.反向代理2.3. 负载均衡 3. 安装与配置3.1.安装3.2.配置文件解释3.2.1.全局配置块3.2.2.HTTP 配置块3.2.3.Server 块3.2.4.Location 块3.2.5.upstream3.2.6. mine.type文件 3.3.多虚拟主机配置 4. 总结 1. 概述 Nginx是我们常用的…

AIGC-----AIGC在虚拟现实中的应用前景

AIGC在虚拟现实中的应用前景 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术的应用也迎来了新的契机。AIGC与VR的结合为创造沉浸式体验带来了全新的可能性&#xff0c;这种组合不仅极大地降低了VR内容的…

学习笔记035——MySQL索引

数据库索引 索引是为了提高数据的查询速度&#xff0c;相当于给数据进行编号&#xff0c;在查找数据的时候就可以通过编号快速找到对应的数据。 索引内部数据结构&#xff1a;B Tree 主键自带索引。 如&#xff1a; insert into user (id, name) values (1,f); insert int…

C语言数据结构-链表

C语言数据结构-链表 1.单链表1.1概念与结构1.2结点3.2 链表性质1.3链表的打印1.4实现单链表1.4.1 插入1.4.2删除1.4.3查找1.4.4在指定位置之前插入或删除1.4.5在指定位置之后插入或删除1.4.6删除指定位置1.4.7销毁链表 2.链表的分类3.双向链表3.1实现双向链表3.1.1尾插3.1.2头插…

计算机网络 网络安全基础——针对实习面试

目录 网络安全基础你了解被动攻击吗&#xff1f;你了解主动攻击吗&#xff1f;你了解病毒吗&#xff1f;说说基本的防护措施和安全策略&#xff1f; 网络安全基础 网络安全威胁是指任何可能对网络系统造成损害的行为或事件。这些威胁可以是被动的&#xff0c;也可以是主动的。…

上海乐鑫科技一级代理商飞睿科技,ESP32-C61高性价比WiFi6芯片高性能、大容量

在当今快速发展的物联网市场中&#xff0c;无线连接技术的不断进步对智能设备的性能和能效提出了更高要求。为了满足这一需求&#xff0c;乐鑫科技推出了ESP32-C61——一款高性价比的Wi-Fi 6芯片&#xff0c;旨在为用户设备提供更出色的物联网性能&#xff0c;并满足智能设备连…

初识java(2)

大家好&#xff0c;今天我们来讲讲java中的数据类型。 java跟我们的c语言的数据类型有一些差别&#xff0c;那么接下来我们就来看看。 一.字面常量&#xff0c;其中&#xff1a;199&#xff0c;3.14&#xff0c;‘a’&#xff0c;true都是常量将其称为字面常量。&#xff08;…

MMCM DRP动态配置方法(超详细讲解)

一、MMCM 源语介绍 1、调用源语 2、调用Clocking Wizard IP 调用Clocking Wizard IP核选择使用MMCM资源时&#xff0c;IP内部也是调用的MMCM源语。 Clocking Wizard IP中启用MMCM DRP接口方法&#xff1a; 在Clocking Wizard IP中设置分频倍频系数方法&#xff1a; IP核中生…