现在的需求是一个窗体打开时,要求光标按事先给定的值,停在一个文本控件里的一个位置。
比如:有个comboBox, 在窗口show的时候,comboBox.Text是"abcd1234",如果有个值是3,那么光标就停在字母c后面我有2处应用,一个是窗口show的时候,选中文字的一段,用comboBox1.Select()和
comboBox1.SelectionStart(),就OK,而只要光标不要选中就没办法另外,我捕捉comboBox1_MouseDown事件可以捕捉光标新的位置,但键盘方向键在移动光标时我没法捕捉!!高手快出现~~~

解决方案 »

  1.   

    我知道一个javascript的方法就是focus()可以设置焦点
      

  2.   

    this.comboBox1.Select();
    this.comboBox1.SelectionStart = 3;
    this.comboBox1.SelectionLength = 0;
      

  3.   

    shiling_02404(拾零)   
    cursor 代表用于绘制鼠标指针的图像。我说的是光标~~
      

  4.   

    hbxtlhx(平民百姓-自已动手,丰衣足食)你那个效果出不来,效果是全选
    如果放在一个按钮的事件上,this.comboBox1.SelectionStart = 3;就行了在窗口打开时,怎么办?
      

  5.   

    你放到Load事件里当然不行,你可以如下处理:protected override void OnShown(EventArgs e)
    {
    base.OnShown(e);
    this.comboBox1.Text = "abcd1234";
    this.comboBox1.Select();
    this.comboBox1.SelectionStart = 3;
    this.comboBox1.SelectionLength = 0;
    }
      

  6.   

    因为Load事件里,控件自身会进行默认处理,使用SelectionStart入SelectionLength一定要在这个默认自身处理之后才行,而Shown事件正好在Load之后的首次显示,所以在这里处理就可以了。
      

  7.   

    补充一个自己的发现:如果是想要选中一部分
    buttonOK.Select();
    comboBox1.Select(2,3);
    这样是可以的,而且不能有comboBox1.Select();//有了就是全选的效果
    comboBox1.SelectionStart = 3;设置光标位置仍然无效~
      

  8.   

    hbxtlhx(平民百姓-自已动手,丰衣足食)
    你说的我很明白,也有体会到,其实我写在了不同的构造函数里,当然这比Lode还要提前,所以不行。我试试OnShown
      

  9.   

    hbxtlhx(平民百姓-自已动手,丰衣足食) 的OnShow事件直接解决了第一个问题。还有个问题,就是我上面说的,键盘的方向键改变了光标位置,怎么能知道实时的光标位置。
      

  10.   

    实时的光标位置?不知道,
    可能要在KeyDown,MouseDown等事件里来取了。
      

  11.   

    我上面说了
    MouseDown能取到点击后的光标位置,所以鼠标ok,MouseMove也OK
    可是
    KeyDown在光标移动之前触发,所以捕捉不到,而且KeyPress不认无法显示的字符最最重要的就是,按住方向键,光标会一直跑的至少我要按键UP的时候的光标位置吧。
      

  12.   

    使用KeyUP事件就可以了,比如:
    private void textBox2_KeyUp(object sender, KeyEventArgs e)
    {
    Console.WriteLine(this.textBox2.SelectionStart);
    }
      

  13.   

    KeyUP是可以了,就是仍然不能实时显示,很感谢!~
      

  14.   

    我想问一下Shown事件是什么?
      

  15.   

    Shown是在窗体显示的时候发生,和Load事件有点像,但不一样。