GetKeywords方法默认值问题
下面的命令输入一个关键字:<CommandMethod("TT")> Public Sub TT()
Dim doc As Document = Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim msg As String = "指定偏移距离或 [通过(T)/删除(E)/图层(L)]"
Dim keywords As String = "Through Erase Layer"
Dim opt As New PromptKeywordOptions(vbLf & msg, keywords)
opt.Keywords.Default = "Through"
opt.AppendKeywordsToMessage = True
opt.AllowNone = True
Dim res As PromptResult = ed.GetKeywords(opt)
If res.Status <> PromptStatus.OK Then
Return
End If
ed.WriteMessage(vbLf & "res.StringResult={0}", res.StringResult)
End Sub对比一下该命令和AutoCAD offset命令的提示效果:
命令: _offset
指定偏移距离或 [通过(T)/删除(E)/图层(L)] <通过>:
命令: tt
指定偏移距离或 [通过(T)/删除(E)/图层(L)] <通过(T)>:
怎样实现offset命令那样的默认值提示,即不提示括号中的内容?
似乎应该用这个?
Editor.GetDistance Method (PromptDistanceOptions)
前面例子仅仅用于说明问题。
类似问题,GetKeywords如何解决? 我就是这个意思,:)
你要的效果GetKeywords是实现不了的,只能用其他的Get,并加Keywords 添加下面代码,问题解决,估计AutoCAD东亚语言版本也是这么做的。:) Dim strDisplay As String = opt.Keywords.GetDisplayString(False)
Dim i = strDisplay.IndexOf("<")
Dim j = strDisplay.IndexOf(">")
If i >= 0 And j >= 0 Then
Dim strDefault As String = strDisplay.Substring(i, j - i + 1)
i = strDisplay.IndexOf("(")
j = strDisplay.IndexOf(")")
strDefault = strDefault.Remove(i, j - i + 1)
opt.Message = vbLf & msg & " " & strDefault
opt.AppendKeywordsToMessage = False
End If 有时间看看这方面的东东,:)
页:
[1]