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

    技术2025-01-25  28

    当输入文字时需要打开输入法,而当打开输入法的时候输入法会直接盖掉下层的程序界面,导致有时候窗体下方的控件无法进行操作(输入文字,点击按钮等),那么这个时候就需要我们在输入法状态变更的时候出发一些事件,让输入法窗口不要盖住程序。首先每次创建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。

    最新回复(0)