AutoCAD .net 二次开发官方教程及源码C#版(6.3)
本章的以下部分将演示获取一个用户在屏幕上选择的雇员实例的详细信息,并把信息显示在一个有模式窗体的编辑框中。这部分的重点是创建一个有模式窗体,并在执行选择操作而窗体要失去焦点时隐藏它。为了获取雇员的详细信息,我们将使用第4章结束时给出的ListEmployee帮助函数。
首先,我们需要创建一个窗体类。这个类是一个真实的窗体而不是我们在ModelessForm中创建的用户控件。
15) 在工程中创建一个Windows窗体类。调用‘ModalForm’类。在窗体中加入以下所示的三个编辑框控件和标签控件以及两个按钮。
使用属性窗口来设置三个编辑框的属性。设置如下:
<首先是最上面的编辑框>
(Name) = tb_Name
Text = <空白>
<第二个编辑框>
(Name) = tb_Division
Text = <空白>
<第三个编辑框>
(Name) = tb_Salary
Text = <空白>
<上部的按钮>
(Name) = SelectEmployeeButton
Text = Select Employee
<下部的按钮>
(Name) = Close
Text = Close
接下来创建按钮的事件处理函数。‘Close’按钮可以只简单地调用:
this.Close();
要显示对话框,让我们在类中创建一个把窗体实例化为有模式对话框的命令函数。下面的实现的代码:
[CommandMethod("MODALFORM")]
public void ShowModalForm()
{
ModalForm modalForm = new ModalForm();
Autodesk.AutoCAD.ApplicationServices.Application.ShowModalDialog(modalForm);
}
编译、装载并在AutoCAD中运行MODALFORM命令来看看对话框是否可以工作。试试在对话框的右下角调整对话框的大小,然后关闭它。注意,重新使用MODALFORM命令时,对话框会出现在你上次离开的地方!这是ShowModalDialog方法的一个特征。大小和位置值被AutoCAD保存了。
‘Select Employee’按钮首先将执行一个简单的实体选择。这我们可以通过使用Editor.GetEntity()方法来实现,选择单一的实体比使用选择集来得方便的多。下面是怎样使用这个方法的代码:
PromptEntityOptions prEnt = new PromptEntityOptions("Select an Employee");
PromptEntityResult prEntRes = ed.GetEntity(prEnt);
16) 把上面的代码加入到SelectEmployeeButton_Click处理函数中,还要加入必需的数据库、命令行、事务处理设置变量和一个try catch块。不要忘了在finally块中销毁它们。
使用PromptStatus.OK来测试GetEntity的返回值,如果返回不等于,就调用this.Show并退出处理函数。
一旦我们获得的返回值是OK,那么我们就可以使用PromptEntityResult.ObjectId()方法来获取所选实体的object Id。这个id可以和一个固定的字符串数组被传入到AsdkClass1.ListEmployee函数中来获取雇员的详细信息。可以通过以下的代码说明:
ArrayList saEmployeeList = new ArrayList();
AsdkClass1.ListEmployee(prEntRes.ObjectId, saEmployeeList);
if (saEmployeeList.Count == 4)
{
tb_Name.Text = saEmployeeList[0].ToString();
tb_Salary.Text = saEmployeeList[1].ToString();
tb_Division.Text = saEmployeeList[2].ToString();
}
17) 加入上面的代码,它会在窗体的编辑框中显示雇员的详细信息。
在开始测试代码之前,我们还要记住的是代码是在有模式对话框中运行的,也就意味着当对话框可见的时候用户与AutoCAD的互操作是被禁止的。在用户能够进行选择雇员对象之前,我们必须隐藏窗体。当选择结束后,我们可以再次站窗体显示(例如,可以在finally块的函数中)
18) 在选择之前加入隐藏窗体的代码(例如在try块之前) ‘this.Hide’ 和选择结束后显示窗体的代码(例如,可以在finally块中)‘this.Show’。
编译、装载并在AutoCAD中运行MODALFORM命令来看看对话框是否工作。试试选择一个实体并填充窗体中编辑框的值。
浙公网安备 33010602011771号