乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: Grrr1337

定义LISP函数

[复制链接]

71

主题

483

帖子

7

银币

中流砥柱

Rank: 25

铜币
765
发表于 2018-10-5 15:58:18 | 显示全部楼层
另外,不要忘记Open DCL,我认为它有一个很好的网格控制。啊,对。我知道它对lisp更友好 - 但仍然决定尝试.NET这是属性get语句的C#6(或更高版本)语法,我明白了,现在我明白了为什么当我从堆栈溢出中复制粘贴C#样本时,我会从VS获得随机错误。我看到了.ListBegin 和 .ListEnd枚举,但不确定必须如何使用它们 - 对我来说,这个例子是金色的,谢谢gile!我不知道为什么,但是这个OOP对我来说很难(虽然不是不可能)。当我遇到无法自我解释的异常时(即使在阅读了异常消息之后),我也会寻找例子并执行美国人说“猴子看,猴子做”(或猴子复制),直到我开始理解为什么它像这样。例如,现在(玩了几个小时),我已经从gile的代码中组装了这个,并期望它能工作......// 基本上,这是在 gile 的 'GetDataFromDialog' 示例中使用 'Array2dToList' 方法的尝试(2dArray 是从 dataGridView1 控件构建的)。
公共类 LispFunctions。
{。
[LispFunction(“GetDataFromDGV”)]。
public static ResultBuffer GetDataFromDGV(ResultBuffer resbuf)。
{ // 无论我做什么,我都会得到这个异常:“对象引用未设置为对象的实例。。
var 数组 = 新字符串[2, 3]。
{。
{“a”, “b”, “c” },。
{“d”, “e”, “f” }。
};。
var dialog = new Dialog();。
var result = AcAp.ShowModalDialog(dialog);。
if (result != DialogResult.OK)。
返回空值;。
// 返回 Array2dToList(array); // 如果我决定返回这个,那么我会得到实际的数组。
返回 Array2dToList(dialog.arrayDGV); // 我每次都会得到 null(但我应该得到一些东西?? -检查对话框类)。
    。
}。
  。
私有静态结果缓冲区数组2dToList(字符串[,]数组)。
{。
var retVal = new ResultBuffer();。
for (int i = array.GetLowerBound(0);i 。
{。
retVal.Add(new TypedValue((int)LispDataType.ListBegin));。
for (int j = array.GetLowerBound(1);j 。
{。
retVal.Add(new TypedValue((int)LispDataType.Text, array[i, j]));。
}。
retVal.Add(new TypedValue((int)LispDataType.ListEnd));。
}。
返回 retVal;。
}。
  。
}public 分部类 对话框:Form // 窗体包含两个用于确定和取消的按钮,以及一个包含几列的数据网格视图,因此用户可以在表中输入。
{。
public string[,] arrayDGV { get; }。
  。
公共对话()。
{。
InitializeComponent();。
可以在[设计]选项卡中设置以下属性。
dataGridView1.AllowUserToAddRows = true;。
dataGridView1.AllowUserToDeleteRows = true;。
btnOk.DialogResult = DialogResult.OK;。
btnCancel.DialogResult = DialogResult.Cancel;。
}。
  。
private void btnOk_Click(object sender, EventArgs e)。
{。
    。
https://stackoverflow.com/questions/25746659/how-to-get-datagridview-data-in-a-2d-array/25747273。
数据网格视图到 2D 数组。
string[,] arrayDGV = new string[dataGridView1.Rows.Count, dataGridView1.Columns.Count]; // 首先创建一个 2D 数组可变,并对数据网格视图的行和 //列进行计数。
foreach (DataGridViewRow row in dataGridView1.Rows)。
{。
整型 i = 行,索引;。
foreach (DataGridViewColumn col in dataGridView1.Columns)。
{。
int j = col.索引;。
string itm = dataGridView1.Rows[i].细胞[j].Value.ToString();。
if (itm == null
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-10-5 17:23:09 | 显示全部楼层
itm == String.Empty
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2018-10-6 07:03:55 | 显示全部楼层
itm.Trim().长度 == 0) // 我已经包含了这个,只是为了确保我会得到一些东西。
arrayDGV[row.索引,列索引] = “空”;。
还。
arrayDGV[row.索引,列Index] = itm;。
}。
}。
    。
} // btnOk_Click。
}。
回复

使用道具 举报

71

主题

483

帖子

7

银币

中流砥柱

Rank: 25

铜币
765
发表于 2018-10-6 13:25:23 | 显示全部楼层
通常,您不处理“确定”和“取消”按钮的单击事件,只设置它们的DialogResult属性
当调用LispFunction创建对话框实例时,它可以访问其所有公共实例成员(属性和方法),以这种方式公开数据是更好的做法
公共部分类对话框:表单
{
//
///创建对话框的新实例。
//
公共对话框()
{
初始化组件()
//可以在[Design]选项卡中设置以下属性。
dataGridView1.AllowUserToAddress=true
dataGridView1.AllowUserToDeleteRows=true
btnOk。DialogResult=DialogResult.OK
btnCancel。DialogResult=DialogResult.Cancel
}
//
///将DataGridView内容作为二维数组返回。
//
///
二维数组
公共字符串[,]GridToArray()
{
int numRows=dataGridView1.RowCount-1
int numColumns=dataGridView1.ColumnCount
var数组=新字符串[numRows,numColumns]
用于(int i=0;i
{
用于(int j=0;j
{
var-value=dataGridView1。行[i]。单元格[j]。值
数组[i,j]=value==null?“null”:value.ToString()
}
}
返回数组
}
}
[LispFunction(“GetDataFromDDV”)]
公共结果缓冲区从DGV获取数据(结果缓冲区resbuf)
{
使用(var dialog=new dialog())
{
var result=AcAp.ShowModalDialog(对话框)
如果(结果!=DialogResult.OK)
返回null
返回Array2dToList(dialog.GridToArray())
}
}
私有结果缓冲数组2dtolist(字符串[,]数组)
{
var-retVal=new-ResultBuffer()
for(int i=array.GetLowerBound(0);我
{
返回。添加(新的TypedValue((int)LispDataType.ListBegin))
for(int j=array.GetLowerBound(1);j
{
返回。将(new-TypedValue((int)添加到LispDataType。文本,数组[i,j])
}
返回。添加(newtypedValue((int)LispDataType.ListEnd))
}
返回retVal
}
回复

使用道具 举报

71

主题

483

帖子

7

银币

中流砥柱

Rank: 25

铜币
765
发表于 2018-10-6 13:46:47 | 显示全部楼层
翻译错误代码(429):请求 QPS 超过限制。
回复

使用道具 举报

71

主题

483

帖子

7

银币

中流砥柱

Rank: 25

铜币
765
发表于 2018-10-6 14:29:07 | 显示全部楼层
关于“良好实践”的另外两点评论(我有时会忘记尊重):
-始终使用使用语句来创建模态对话框的实例(“关闭”模态对话框只会隐藏它,但不会调用关闭/处置,因此它在所有会话期间都保留在内存中)。
-当实例方法不是绝对必要时,总是喜欢对命令或LISP函数使用静态方法。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 08:40 , Processed in 0.166850 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表