WinForms ListBox with readonly/disabled items

后端 未结 5 1626
傲寒
傲寒 2021-01-18 20:39

Is there a way to make some of the items in a ListBox readonly/disabled so they can\'t be selected? Or are there any similar controls to ListBox to provide this functionalit

5条回答
  •  梦谈多话
    2021-01-18 21:18

    ListBox doesn't have a ReadOnly (or similar) property, but you can make a custom ListBox control. Here's a solution that worked pretty well for me:

    https://ajeethtechnotes.blogspot.com/2009/02/readonly-listbox.html

    public class ReadOnlyListBox : ListBox 
    { 
        private bool _readOnly = false; 
        public bool ReadOnly 
        { 
            get { return _readOnly; } 
            set { _readOnly = value; } 
        } 
    
        protected override void DefWndProc(ref Message m) 
        { 
            // If ReadOnly is set to true, then block any messages 
            // to the selection area from the mouse or keyboard. 
            // Let all other messages pass through to the 
            // Windows default implementation of DefWndProc.
            if (!_readOnly || ((m.Msg <= 0x0200 || m.Msg >= 0x020E) 
                && (m.Msg <= 0x0100 || m.Msg >= 0x0109) 
                && m.Msg != 0x2111 
                && m.Msg != 0x87)) 
            {
                base.DefWndProc(ref m); 
            } 
        } 
    } 
    

提交回复
热议问题