我正在创建一个包含多行 TextBox
的表单来输入网址。预期的网址会很长。
用户将粘贴URL并移至下一个框。
现在,TextBox
会在用户移至下一个TextBox
时显示网址的结尾部分。我希望它能显示URL(域名)的起始而不是尾随部分。
电流:
预期:
这应该在用户离开TextBox
时发生。
我在Selection
事件中尝试了textBox_Leave()
的各种方法,但我想,如果失去焦点,这些方法将无效。
我正在使用.Net framework 3.5。
更新:我使用的文本框是Multiline。如果Mutliline
属性设置为False,@ S.Akbari和@Szer建议的答案是完美的。我意识到,Multiline
将发挥如此重要的作用。因此更新问题!
答案 0 :(得分:2)
在Leave
事件中使用SelectionStart
应该有效:
private void textBox1_Leave(object sender, EventArgs e)
{
textBox1.SelectionStart = 0;
}
在:
离开TextBox
后:
答案 1 :(得分:2)
尝试过它并且有效。 Proof
public Form1()
{
InitializeComponent();
textBox1.LostFocus += TextBox1_LostFocus;
}
private void TextBox1_LostFocus(object sender, EventArgs e)
{
textBox1.SelectionStart = 0;
textBox1.SelectionLength = 0;
}
答案 2 :(得分:1)
我可以看到它如何处理Multiline属性设置为true。
一个简单的API调用可以使这个工作:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
private const int WM_VSCROLL = 0x115;
private const int SB_TOP = 6;
void textBox1_Leave(object sender, EventArgs e) {
SendMessage(textBox1.Handle, WM_VSCROLL, (IntPtr)SB_TOP, IntPtr.Zero);
}