1:它的enter事件是什么?就是按了enter键后反应的事件,我实验了下enter,好象没反因.2:下面的代码错在什么地方?this.comboBox1.Text=this.listBox1.SelectedValue.ToString()执行不了,说未将对象引用到对象实例

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Down)&&this.Contains(this.listBox1))
{
this.listBox1.Focus();
if(keyData == (Keys.Up)||keyData == (Keys.Down))
{

                            this.comboBox1.Text=this.listBox1.SelectedValue.ToString();
}

}

return base.ProcessCmdKey (ref msg, keyData);
}
3:如何取得lisebox当前条目的值再赋给其他变量?我上面的作法不行,应该怎么做?

解决方案 »

  1.   

    对于你的做法,不应该重载form的ProcessCmdKey,而应该在listbox上做文章。
      

  2.   

    1.enter是否进入事件(不知道楼主讲的是不是mouseenter和dropenter)
    2.3.获得listbox当前选定的值(当listbox允许多选时有可能有多项):
            Dim i As Int16
            For i = 0 To ListBox1.SelectedItems.Count - 1
                Debug.Print(ListBox1.SelectedItems.Item(i))
            Next
      

  3.   

    楼上的兄弟:
    我改成:
    this.comboBox1.Text=this.listBox1.SelectedItem.ToString();
    还是有那个异常不知道SelectedItem与SelectedValue有什么区别...
    是不是光标移动了SelectedItem就同时改变了??
      

  4.   

    this.comboBox1.Text="1";//这个为什么行??
    this.listBox2.Text=this.listBox1.SelectedItem.ToString();//为什么总是运行时错误?
      

  5.   

    to 
    this.comboBox1.Text="1";//这个为什么行??
    this.listBox2.Text=this.listBox1.SelectedItem.ToString();//为什么总是运行时错误?你的数据来源是什么,手动插入还是绑定获得?
      

  6.   

    逻辑是这样的:首先combobox里输入,在textchanged事件里捕获是否在listbox(已经有item)里存在combobox.text的相似项,有则从list的SelectedIndexChanged事件里取出自动填到combobox.text上.很多程序都有这功能.
      

  7.   

    listvbox里的item可以认为是程序load的
      

  8.   

    to 首先combobox里输入,在textchanged事件里捕获是否在listbox(已经有item)里存在combobox.text的相似项,有则从list的SelectedIndexChanged事件里取出自动填到combobox.text上.很多程序都有这功能.
    this.comboBox1.Text="1";//这个为什么行??你最好判断一下“1”是否存在。to this.listBox2.Text=this.listBox1.SelectedItem.ToString();//为什么总是运行时错误?没有这样写的,如果是往listbox2中添加,应该
    listBox2.Items.Add( this.listBox1.SelectedItem.ToString() );
      

  9.   

    老大,看来你也碰上问题了你的这句也没用.注了就没运行异常:listBox2.Items.Add( this.listBox1.SelectedItem.ToString() );我想,这会否与频繁的事件调用有什么关系?一般情况下不会出这重问题吧.
      

  10.   

    老大:现在问题已经简化成: private void listboxkeydown(object sender,System.Windows.Forms.KeyEventArgs keyData)
    { if (keyData.KeyCode == (Keys.Enter))
    {
    this.comboBox1.Text=this.listBox1.SelectedItem.ToString();//ok


    } if(keyData.KeyCode == (Keys.Down)||keyData.KeyCode == (Keys.Up))
    {
    this.comboBox1.Text=this.listBox1.SelectedItem.ToString();//wrong.未将对象引用到对象实例
    } }请帮帮我!
      

  11.   

    1.Enter事件是成为当前窗体活动控件时产生。2."this.comboBox1.Text=this.listBox1.SelectedValue.ToString()执行不了"----设个断点,调试跟踪一下,观察listBox1.Items,listBox1.Items.Count,listBox1.SelectedIndex的值。(代码中SelectedValue改为SelectedItem)3.用SelectedItem:
    object obj = listBox1.SelectedItem;
    if (obj == null)
    {
       ....没有选中值
    }
    else
    {
        obj.ToString();//当前选中行
    }
    如果你要取的不是当前选中行,而是当前控件中的所有行或者第一行,请用listBox1.Items,listBox1.Items[0]
      

  12.   

    losedxyz(我真的一无所有) ( ) 信誉:100  2006-8-24 0:39:18  得分: 0     
    楼上的兄弟,非常感谢您的耐心请你看看我的前面那个回复,对于这样的现象,我无能为力了...
    ______________________________请确定listboxkeydown是listBox1的事件。我测试了,没问题。(你把有问题的代码拷上来,包括事件关联)另:建议不要用keydown事件,用SelectedIndexChanged事件比较好。
      

  13.   

    我知道是怎么回事情了combobox的key事件好象屏蔽了down和up键,因此我如果要按down来激活listbox,按照我原先的做法:重载窗体的事件:protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
    if (keyData == (Keys.Down)&&this.Contains(this.listBox1))
    {
    this.listBox1.Focus();
    if(keyData == (Keys.Up)||keyData == (Keys.Down))
    {
    this.comboBox1.Text=this.listBox1.SelectedValue.ToString();
    }这样会有不可预知的错误.在listbox里再这样:if(keyData.KeyCode == (Keys.Down)||keyData.KeyCode == (Keys.Up))
    {
    this.comboBox1.Text=this.listBox1.SelectedItem.ToString();//wrong.未将对象引用到对象实例
    }就会冲突了,不知道是不是这样
      

  14.   

    高手们,请提供一个思路:在combobox激活状态下,如果按下up或者down,可以将焦点转移到listbox.注意:combobox的key事件好象屏蔽了down和up键,因为我调试的时候死活没反应