C# 能不能获取文本框光标当前所在的位置,及所在的行

C# 能不能获取文本框光标当前所在的位置,及所在的行,第1张

[DllImport("user32dll", EntryPoint = "SendMessageA")]

private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, StringBuilder lParam);

[DllImport("user32 ")]

private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

private void button2_Click(object sender, EventArgs e)

{

int EM_LINEINDEX = 0xBB;

int EM_LINEFROMCHAR = 0xC9;

int EM_GETSEL = 0xB0;

int EM_GETLINE = 0xC4;

//通过API完成很简单的

//通过向文本框传递EM_LINEFROMCHAR消息可以得到光标所在的行数

int Row = (int)SendMessage(textBox1Handle, EM_LINEFROMCHAR, -1, 0);

////通过向文本框传递EM_GETSEL消息可以得到编辑控件中一段选定内容的起点与终点字符的个数

//int s = (int)SendMessage(textBox1Handle, EM_GETSEL, 0, 0);

////通过向文本框传递EM_GETSEL消息可以得到每一行的第一个字符在全文中的字符序号

//int li = (int)SendMessage(textBox1Handle, EM_LINEINDEX, -1, 0);

//int Col = (s & 0xffff) - li + 1;

StringBuilder currentLine = new StringBuilder(256);

SendMessage(textBox1Handle, EM_GETLINE, Row, currentLine);

MessageBoxShow(currentLineToString());

}

为你的Edit

控件添加OnSetFocus方法,在Dlg头文件中添加如下代码:

public:

afx_msg void OnSetfocusEdit1();

在Dlg代码CPP文件中的消息映射中添加如下代码:

BEGIN_MESSAGE_MAP(CEditGetFocusDlg, CDialogEx)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

// 下行代码是的作用是使Edit 控件响应SetFocus

// IDC_EDIT 为控件ID,CEditGetFocusDlg为主窗体类名

// OnSetfocusEdit1为消息处理过程

ON_EN_SETFOCUS(IDC_EDIT1, &CEditGetFocusDlg::OnSetfocusEdit1)

END_MESSAGE_MAP()void CEditGetFocusDlg::OnSetfocusEdit1()

{

// 当Edit 控件获得焦点时,显示一个对话框

CAboutDlg dlgAbout ;

dlgAboutDoModal() ;

}

importjavaawt;importjavaapplet;importjavaawtevent;publicclassUseTextEventextendsAppletimplementsActionListener,TextListener{TextFieldt1;TextAreat2;Panelp1;publicvoidinit(){t1=newTextField(25);t2=newTextArea(10,25);t1addActionListener(this);t1addTextListener(this);p1=newPanel(newBorderLayout());p1add(t1,BorderLayoutNORTH);p1add(t2,BorderLayoutSOUTH);add(p1);}publicvoidtextValueChanged(TextEventt){if(tgetSource()==t1){t1setText(t1getText());t1setCaretPosition(t1getText()length());//设置输入后的长度t2setText(t1getText());}}publicvoidactionPerformed(ActionEvente){if(egetSource()==t1)t2setText("");}}这个可以使光标放在文字的后面,但是光标还是会闪动,不稳定。

以上就是关于C# 能不能获取文本框光标当前所在的位置,及所在的行全部的内容,包括:C# 能不能获取文本框光标当前所在的位置,及所在的行、vc6.0 鼠标点击EDIT获取光标时,d出dialog。、java后台编程怎么获取当前光标所在的位置,并输入一段指定的文本(或者说获取当前选中的文本框也行)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9630989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存