设置SelectionStart和SelectionLength后,插入符号位于select的末尾。
如何将插入符号移至select的开头?
我现在试了这个:这个问题没有被其他线程回答
SelectionStart = selStart; // set the desired position SelectionLength = 0; MyLibs.WindowsDll.POINT point; MyLibs.WindowsDll.getcaretpos(out point); // save the position SelectionLength = restOfWord.Length; // extend the selection MyLibs.WindowsDll.SetCaretPos(point.X,point.Y); // restore caret position
getcaretpos和SetCaretPos以某种方式工作,但不是它应该的。 使用上面的代码片段,插入符号在select开始时确实闪烁。
.Net中的高容量,高速文本框
纠缠的文本框
C#将其他应用程序的sendkeys发送到特定的文本字段
C# – input值时刷新文本框
Windowsapp store应用多行文本框新行
但是…然后我向左/向右击退格或光标,脱字符仍然像在select结束时一样。
Windows应用程序中的WPF组件
validationWinForms文本框(在C#中)
分割逗号分隔string5
如何在WPF应用程序中用C#制作一个类似Google的自动完成文本框?
用C ++创build多行文本框/文本框,而不是VC ++
不幸的是,你不能使用像C#这样的托管代码来实现这个目的,但是为了实现这个目标,你可以使用C ++, SetFocus()函数,例如:
//use SetFocus() pEdit->SetFocus() //place caret at the end: pEdit->SendMessage (WM_KEYDOWN,VK_END,0); //simulate keyup: m_Edit->SendMessage (WM_KEYUP,0); //send the key code: m_Edit->SendMessage(WM_CHAR,'A',0);
看看MSDN: https : //msdn.microsoft.com/en-us/library/windows/desktop/ms646312(v= vs.85) .aspx
您也可以使用CEdit::SetSel来完成:
CEdit* e = (CEdit*)GetDlgitem(IDC_EDIT1); e->SetFocus(); e->SetSel(0,-1); // move cursor at the end e->SetSel(-1); // remove selection
在Stackoverflow中查看详细信息: CEdit控件MFC,将光标放在SetwindowText后面的字符串结尾处
更新:
如果您需要将位置设置为开始位置,则可以在使用以下命令显示文本之前重置插入符号位置:
SetSel (0,0);
在使用基本的C#/ C ++函数保持文本被选中的同时,不能移动插入符,但是可以使用C ++或/和汇编程序覆盖基本的“插入符号”逻辑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。