【问题标题】:disable arrow key on scheduler control禁用调度程序控件上的箭头键
【发布时间】:2016-10-13 10:49:32
【问题描述】:

有没有办法禁用左右方向键?因为我不希望用户看到10 october 之前的日期和16 october 之后的日期

我试过这个代码

       private void schedulerControl1_KeyDown(object sender, KeyEventArgs e)
    {
        if(e.KeyCode == Keys.Right)
        {

            e.Handled = true;
        }
    }

它仍然可以单击箭头键,并且我检查了schedulercontrol 属性没有keypreview。或者可能为用户无法单击或关注单元格设置禁用

n.b : iam 使用 devexpress 和组件 scheduler

【问题讨论】:

    标签: c# winforms devexpress


    【解决方案1】:

    您可以使用 IKeyboardHandlerService。

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
            IKeyboardHandlerService oldKeyboardHandler = (IKeyboardHandlerService)schedulerControl1.GetService(typeof(IKeyboardHandlerService));
            if (oldKeyboardHandler != null)
            {
                MyKeyboardHandlerService newKeyboardHandler = new MyKeyboardHandlerService(schedulerControl1, oldKeyboardHandler);
                schedulerControl1.RemoveService(typeof(IKeyboardHandlerService));
                schedulerControl1.AddService(typeof(IKeyboardHandlerService), newKeyboardHandler);
            }
        }
    }
    
    public class MyKeyboardHandlerService : KeyboardHandlerServiceWrapper
    {
        IServiceProvider provider;
    
        public MyKeyboardHandlerService(IServiceProvider provider, IKeyboardHandlerService service)
            : base(service)
        {
            this.provider = provider;
        }
    
        public override void OnKeyDown(KeyEventArgs e)
        {
            if (!(e.KeyCode == Keys.Left|| e.KeyCode == Keys.Right))
                            base.OnKeyDown(e);
        }
    }
    

    【讨论】:

      【解决方案2】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      相关资源
      最近更新 更多