微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows窗体文本框:select和插入位置

设置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] 举报,一经查实,本站将立刻删除。

相关推荐