How can I handle ComboBox selected index changing?

前端 未结 10 1239
花落未央
花落未央 2020-12-21 06:10

I have a ComboBox that have a list of manufacturers. When a user selects a manufacturer, a grid below is populated with data for the chosen manufacturer. That data can be mo

10条回答
  •  情歌与酒
    2020-12-21 07:01

    Here is how we can subclass ComboBox to introduce new SelectedIndexChangingEvent with a possibility to cancel the changing:

        public class ComboBoxEx : ComboBox
    {
        public event CancelEventHandler SelectedIndexChanging;
    
        [Browsable(false)]
        public int LastAcceptedSelectedIndex { get; private set; }
    
        public ComboBoxEx()
        {
            LastAcceptedSelectedIndex = -1;
        }
    
        protected void OnSelectedIndexChanging(CancelEventArgs e)
        {
            var selectedIndexChanging = SelectedIndexChanging;
            if (selectedIndexChanging != null)
                selectedIndexChanging(this, e);
        }
    
    
        protected override void OnSelectedIndexChanged(EventArgs e)
        {
            if (LastAcceptedSelectedIndex != SelectedIndex)
            {
                var cancelEventArgs = new CancelEventArgs();
                OnSelectedIndexChanging(cancelEventArgs);
    
                if (!cancelEventArgs.Cancel)
                {
                    LastAcceptedSelectedIndex = SelectedIndex;
                    base.OnSelectedIndexChanged(e);
                }
                else
                    SelectedIndex = LastAcceptedSelectedIndex;
            }
        }
    
    }
    

提交回复
热议问题