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;
    // 初始化DataGridView
    DataGridView 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;
}

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

击败.helper勒索病毒:恢复被加密的数据文件的方法

导言: 近年来&#xff0c;勒索病毒成为网络安全领域的一大威胁&#xff0c;其中.helper勒索病毒更是备受关注。该类型的勒索软件以其高效的加密算法&#xff0c;能够将用户的文件加密&#xff0c;迫使用户支付赎金才能解密数据。本文将介绍.helper勒索病毒的特点、恢复被加密数…

Howler.js:音频处理的轻量级解决方案

文章目录 Howler.js&#xff1a;音频处理的轻量级解决方案引言一、Howler.js简介1.1 特性概览 二、Howler.js基本使用使用详解2.1 创建一个Howl对象2.2 控制音频播放2.3 监听音频事件 三、进阶功能3.1 音频Sprites3.2 3D音频定位 四、微前端场景下的Howler.js Howler.js&#x…

51_蓝桥杯_独立按键

一 电路 注意&#xff1a;J5跳帽接到2~3引脚&#xff0c;使按键S4-S5四个按键的另外一端接地&#xff0c;从而成为4个独立按键。 二 独立按键工作原理 三 代码 代码1&#xff1a;按下S7点亮L1指示灯&#xff0c;松开按键&#xff0c;指示灯熄灭&#xff0c;按下S6点亮L2指示灯…

Java 绘图

一、坐标体系 二、快速入门&#xff08;画圆&#xff09; import javax.swing.*; import java.awt.*;SuppressWarnings({"all"}) public class DrawCircle extends JFrame { //JFrame 对应窗口,可以理解成是一个画框private MyPanel mp null; //定义一个面板pu…

Google的firebase简介

文章目录 firebase简介firebase的一些特点 firebase简介 Firebase是一项由Google提供的云服务&#xff0c;旨在帮助开发者构建高质量的应用程序。Firebase 提供了各种工具和服务&#xff0c;涵盖了应用开发的多个方面&#xff0c;包括实时数据库、认证、云存储、云函数、推送通…

stable diffusion官方版本复现

踩了一些坑&#xff0c;来记录下 环境 CentOS Linux release 7.5.1804 (Core) 服务器RTX 3090 复现流程 按照Stable Diffusion的readme下载模型权重、我下载的是stable-diffusion-v1-4 版本的 1 因为服务器没法上huggingface&#xff0c;所以得把权重下载到本地&#xff…

js中使用for in注意事项,key的类型为string类型

for in是一个非常实用的存在&#xff0c;既可以遍历数组&#xff0c;又可以遍历对象&#xff0c;所以我一般都是会用来遍历可迭代的数据&#xff0c;遍历数组和对象的时候&#xff0c;要注意使用万能遍历方式&#xff1a; const users [1, 3, 45, 6]// const users {// 1…

Unity3D中刚体、碰撞组件、物理组件的区别详解

前言 Unity3D提供了丰富的功能和组件&#xff0c;其中包括刚体、碰撞组件和物理组件。这些组件在游戏开发中起着非常重要的作用&#xff0c;能够让游戏世界更加真实和有趣。本文将详细介绍这三种组件的区别以及如何在Unity3D中实现它们。 对惹&#xff0c;这里有一个游戏开发…

【论文阅读|基于 YOLO 的红外小目标检测的逆向范例】

基于 YOLO 的红外小目标检测的逆向范例 摘要1 引言2 相关工作2.1 逆向推理2.2 物体检测方法 3 方法3.1 总体架构3.2 逆向标准的可微分积分 4 实验4.1 数据集和指标4.2 实验环境4.4 OL-NFA 为少样本环境带来稳健性 5 结论 论文题目&#xff1a; A Contrario Paradigm for YOLO-b…

用CSS3画一个三角形

<style> .up{width:0;height:0;border: 100px solid transparent;border-top: 100px solid red;/*红色*/ } .down{width:0;height:0;border: 100px solid transparent;border-bottom: 100px solid blue;/*蓝色*/ } .left{width:0;height:0;border: 100px solid transpare…

python coding with ChatGPT 打卡第21天| 二叉树:最近公共祖先

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…

【经验分享】分类算法与聚类算法有什么区别?白话讲解

经常有人会提到这个问题&#xff0c;从我个人的观点和经验来说2者最明显的特征是&#xff1a;分类是有具体分类的数量&#xff0c;而聚类是没有固定的分类数量。 你可以想象一下&#xff0c;分类算法就像是给你一堆水果&#xff0c;然后告诉你苹果、香蕉、橙子分别应该放在哪里…

BUUCTF crypto做题记录(7)新手向

一、Dangerous RSA 得到的密文如下 首先&#xff0c;我们对n进行大数分解看行不行。 其次&#xff0c;我们可看一下数的特征&#xff08;除了一些基础题&#xff0c;一般情况下n都是分解不了的&#xff0c;应该首先观察一下数据特征&#xff0c;我很久没做RSA了&#xff0c;有…

vue3前端项目开发,具备纯天然的防止爬虫采集的特征

vue3前端项目开发,具备纯天然的防止爬虫采集的特征&#xff01;众所周知&#xff0c;网络爬虫可以在网上爬取到一些数据&#xff0c;很多公司&#xff0c;为了自己公司的数据安全&#xff0c; 尤其是web端项目&#xff0c;不希望被爬虫采集。那么&#xff0c;您可以使用vue技术…

设计模式: 策略模式

文章目录 一、什么是策略模式二、策略模式结构三、使用场景案例分析1、使用场景2、案例分析&#xff08;1&#xff09;消除条件分支 一、什么是策略模式 策略模式是一种行为型设计模式&#xff0c;它允许定义一组算法&#xff0c;并将每个算法封装在独立的类中&#xff0c;使它…

学习鸿蒙基础(4)

1.条件渲染 ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态&#xff0c;使用if、else和else if渲染对应状态下的UI内容。 当if、else if后跟随的状态判断中使用的状态变量值变化时&#xff0c;条件渲染语句会进行更新。。 Entry Component struct PageIfElse {Stat…

LeetCode Python - 29.两数相除

目录 题目答案运行结果 题目 给你两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断&#xff0c;也就是截去&#xff08;truncate&#xff09;其小数部分。例如&#xff0c;8.345 将被截…

vscode更改代码背景

安装插件&#xff1a;background-cover 安装成功后vscode的右下角出现一个标&#xff1a; 点击后选择图片就行了

【面试题】谈谈MySQL的索引

索引是啥 可以把Mysql的索引看做是一本书的目录&#xff0c;当你需要快速查找某个章节在哪的时候&#xff0c;就可以利用目录&#xff0c;快速的得到某个章节的具体的页码。Mysql的索引就是为了提高查询的速度&#xff0c;但是降低了增删改的操作效率&#xff0c;也提高了空间…

数据结构-邻接链表

介绍 邻接矩阵是运用较多的一种储存图的方法&#xff0c;但如果一张网图边数较少&#xff0c;就会出现二维矩阵中大部分数据为0的情况&#xff0c;浪费储存空间 为了避免空间浪费&#xff0c;也可以采用数组与链表结合的方式来存储图 假设有这样一张图 我们可以先用一个数组…