当前位置: 首页 > news >正文

C# CAD交互界面-模态窗体与非模态窗体调用方式

 运行环境Visual Studio 2022 c# cad2016

一、模态窗体调用方式
当一个模态窗体打开时,它会阻塞主窗体的所有输入,直到关闭该模态窗体为止。例如,弹出一个对话框让用户必须完成某些操作后才能继续使用主程序。

[CommandMethod("Caidan")]
public void Caidan()
{ShowModalLayerSelectionForm();//模态窗体}
//模态窗体private void ShowModalLayerSelectionForm(){using (var layerForm = new Form1()){DialogResult result = layerForm.ShowDialog(); // 使用ShowDialog()方法打开模态窗体if (result == DialogResult.OK || result == DialogResult.Yes) // 根据需要处理结果{// 处理用户选择图层的操作...}}}

二、非模态窗体调用方式

非模态窗体打开时,用户可以同时与主窗体和其他非模态窗体进行交互。通常用作工具栏、辅助信息显示窗口等。

[CommandMethod("Caidan")]
public void Caidan()
{Form1 选择图层 = new Form1(); //非模态窗体选择图层.Show();
}

三、窗体程序

     this.MaximizeBox = false;this.MinimizeBox = false;// 初始化DataGridViewDataGridView dataGridView = new DataGridView();// 创建一个新的DataGridView控件实例dataGridView.AllowUserToAddRows = false;// 禁止用户通过DataGridView界面直接添加新行dataGridView.AllowUserToDeleteRows = false;// 禁止用户通过DataGridView界面删除现有行dataGridView.BackgroundColor = Color.White;// 设置DataGridView的背景颜色为白色dataGridView.CellBorderStyle = DataGridViewCellBorderStyle.Single;// 设置单元格边框样式为单线边框dataGridView.DefaultCellStyle.SelectionBackColor = Color.LightBlue;// 设置选中单元格时的背景色为浅蓝色dataGridView.DefaultCellStyle.SelectionForeColor = Color.Black;// 设置选中单元格时的前景色(文本颜色)为黑色// 添加图层名称列DataGridViewTextBoxColumn layerNameColumn = new DataGridViewTextBoxColumn();layerNameColumn.HeaderText = "图层名称";layerNameColumn.ReadOnly = true;dataGridView.Columns.Add(layerNameColumn);// 假设GetLayerList返回CAD图层的名称列表//List<string> layerNames = GetLayerList();foreach (LayerTableRecord layer in GetLayerList()){dataGridView.Rows.Add(layer.Name);}// 添加DataGridView到窗体this.Controls.Add(dataGridView);dataGridView.Dock = DockStyle.Fill;dataGridView.CellDoubleClick += DataGridView_CellDoubleClick;
}private void DataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{if (sender is DataGridView dgv && e.RowIndex >= 0) // 检查是否在有效的行上双击{string selectedLayerName = dgv.Rows[e.RowIndex].Cells[0].Value.ToString(); // 获取选中的图层名称// 处理双击选定图层的逻辑MessageBox.Show($"双击了图层:{selectedLayerName}");// 根据需求执行其他操作...}
}private IEnumerable<LayerTableRecord> GetLayerList()
{List<LayerTableRecord> layers = new List<LayerTableRecord>();using (Transaction tr = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction()){LayerTable layerTable = (LayerTable)tr.GetObject(HostApplicationServices.WorkingDatabase.LayerTableId, OpenMode.ForRead);foreach (ObjectId id in layerTable){LayerTableRecord layer = (LayerTableRecord)tr.GetObject(id, OpenMode.ForRead);layers.Add(layer);}tr.Commit();}return layers;
}

//感谢大家的点赞,收藏,转发,关注  

相关文章:

  • RisingWave最佳实践-利用Dynamic filters 和 Temporal filters 实现监控告警
  • 利用DevOps和ITSM的集成能促进IT技术
  • 后端经典面试题合集
  • fiddler抓取,Android真机测试
  • 【高德地图】Android高德地图控件交互详细介绍
  • C# 语言教程
  • 团簇束流沉积技术:氢气传感器守护安全与环境的利器
  • ElasticSearch之单值多字段查询以及dis max query
  • Github 2024-02-24 开源项目日报Top10
  • 使用pytest和allure框架实现自动化测试报告优化
  • 程序环境和预处理(1)
  • 【Python】实现限时循环的学习笔记
  • [工具探索]VSCode介绍和进阶使用
  • [python]python监听、操作键盘鼠标库pynput详细教程
  • 后端设计PNR一点总结
  • exports和module.exports
  • Github访问慢解决办法
  • leetcode46 Permutation 排列组合
  • Making An Indicator With Pure CSS
  • Material Design
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • python 学习笔记 - Queue Pipes,进程间通讯
  • scrapy学习之路4(itemloder的使用)
  • vue-router的history模式发布配置
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 高度不固定时垂直居中
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 记一次用 NodeJs 实现模拟登录的思路
  • 聊聊directory traversal attack
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何优雅地使用 Sublime Text
  • 使用权重正则化较少模型过拟合
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 数据结构java版之冒泡排序及优化
  • 我感觉这是史上最牛的防sql注入方法类
  • MPAndroidChart 教程:Y轴 YAxis
  • 国内开源镜像站点
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​卜东波研究员:高观点下的少儿计算思维
  • #《AI中文版》V3 第 1 章 概述
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (分布式缓存)Redis持久化
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (区间dp) (经典例题) 石子合并
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .gitignore文件设置了忽略但不生效
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net 简单实现MD5
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)