C# windows mobile输入法窗口不挡住文本框? .

来源:互联网 发布:python可以做什么 编辑:程序博客网 时间:2024/04/30 09:15

当输入文字时需要打开输入法,而当打开输入法的时候输入法会直接盖掉下层的程序界面,导致有时候窗体下方的控件无法进行操作(输入文字,点击按钮等),那么这个时候就需要我们在输入法状态变更的时候出发一些事件,让输入法窗口不要盖住程序。
首先每次创建Form,最好都先添加一个panel做控件的上层容器,设定好相对panel的位置,这样控件才会根据panel的变化而变化。之后给InputPanel的EnabledChanged事件加入下面的代码:
        private void inputPanel1_EnabledChanged(object sender, EventArgs e)
        {
            if (inputPanel1.Enabled)
            {
                this.panel1.Dock = DockStyle.None;
                this.panel1.Height = inputPanel1.VisibleDesktop.Height;

                foreach (Control ontrol in this.panel1.Controls)
                {
             
                    if (ontrol is TextBox&& ontrol.Focused)
                    {
                        this.panel1.AutoScrollPosition = ontrol.Location;
                    }
                }

            }
            else
            {
                this.panel1.Dock = DockStyle.Fill;
            }
        }

当输入法打开的时候panel不再占据全屏,而是跟除了输入法外的可视化范围一样高。输入法关闭时,panel恢复占据全屏。当然panel的AutoScroll要设定为true。

原创粉丝点击