网站建设建设多少钱,网站建设 模板,开发一个小程序大概要多少钱,网店大师运行环境Visual Studio 2022 c# cad2016 一、模态窗体调用方式#xff1a; 当一个模态窗体打开时#xff0c;它会阻塞主窗体的所有输入#xff0c;直到关闭该模态窗体为止。例如#xff0c;弹出一个对话框让用户必须完成某些操作后才能继续使用主程序。
[CommandMethod( 当一个模态窗体打开时它会阻塞主窗体的所有输入直到关闭该模态窗体为止。例如弹出一个对话框让用户必须完成某些操作后才能继续使用主程序。
[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图层的名称列表//Liststring 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 IEnumerableLayerTableRecord GetLayerList()
{ListLayerTableRecord layers new ListLayerTableRecord();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;
}
//感谢大家的点赞收藏转发关注