Not executing some event

I have listbox and I use "ItemIndexChange" event to do some action, but i do something else when i click on the list ("MouseDown" event).

Events order: "ItemIndexChange", "MouseDown".

How can I prevent executing "ItemIndexChange" when I clicked on the list and execute this event when I use keyboard to navigate throught list items.


Answer this question

Not executing some event

  • Sanjay12345

    Hi,

    You can trap the events before they reach your application, you need to overide the function wndproc

    protected override void WndProc(ref Message m)
    {
    switch (m.Msg)
    {
    case YOUR_EVENT_ID: break;
    default: base.WndProc (ref m); break;
    }
    }

    I think the selectedindexchange event Id is 305 or 273, don't remember very well.

    Hope this helps,

    Regards



  • Juvraj

    I thinked about that, but I want to miss ItemIndexChange event which is processed first. I can use flag when I want to miss second event (like in your example).

  • ploaiza

    Just be creative and use a boolean flag or something:


    public class MyClass
    {
    private bool _itemChanged = false;

    private void listBox1_ItemIndexChanged( object sender, EventArgs e )
    {
    _itemChanged = true;
    }

    private void listBox1_MouseDown( object sender, MouseEventArgs e )
    {
    if( _itenChanged )
    {
    // TODO: Add your logic here.
    _itemChanged = false;
    }
    }
    }



  • Not executing some event