aierda 2023-03-05 10:14 采纳率: 72.1%
浏览 136
已结题

如何让触摸屏上的某一块区域不能操作

img


描述:如图所示,这个弹出框是window系统自带的Tabtip键盘,位置在
C:\Program Files\Common Files\microsoft shared\ink目录下面。
有这样的需求,就是HEADER里面的“设置” “图标”区域不能让用户去触摸点击。
这个有办法做到吗,使用环境为winform。

  • 写回答

9条回答 默认 最新

  • 「已注销」 2023-03-05 10:21
    关注

    “Devil组”引证GPT后的撰写:
    1.在winform中,处理触摸事件并判断是否在禁用区域内,如果在该区域内,则忽略该事件。例如:

    private void MyControl_Touch(object sender, TouchEventArgs e)
    {
        Point touchPoint = e.GetTouchPoint(this).Position;
        if (IsInDisabledArea(touchPoint))
        {
            e.Handled = true;
        }
    }
    
    private bool IsInDisabledArea(Point touchPoint)
    {
        // 判断touchPoint是否在禁用区域内
        // 如果是,则返回true,否则返回false
    }
    
    
    

    2.可以覆盖该区域上方的控件或图像,例如添加一个透明的Panel,它会阻止用户点击下面的控件。例如:

    private void AddDisabledPanel()
    {
        var panel = new Panel();
        panel.BackColor = Color.Transparent;
        panel.Dock = DockStyle.Fill;
        panel.MouseDown += DisabledPanel_MouseDown;
        this.Controls.Add(panel);
    }
    
    private void DisabledPanel_MouseDown(object sender, MouseEventArgs e)
    {
        // 忽略该事件
    }
    
    
    

    3.如果用的是WPF而不是WinForms,您可以使用AdornerDecorator,它可以在UI元素上方添加附加装饰,从而防止触摸事件穿透到下面的元素。例如:

    <AdornerDecorator>
        <Grid>
            <!-- 禁用区域 -->
            <Rectangle Width="100" Height="100" Fill="Red" />
            <!-- 其他控件 -->
            <Button Content="Clickable" />
        </Grid>
    </AdornerDecorator>
    
    
    

    这些是禁用触摸屏幕上某个区域的一些方法,可以根据自己的需求选择其中一种方法。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 创建了问题 3月5日