参考:
当弹出输入法面板时会挡住一些用户控件,感觉很不好,处理办法就是将控件放在一个Panel中,设置Panel的AutoScroll属性为True,在面板状态改变时同时改变Panel的尺寸。
原文
private Microsoft.WindowsCE.Forms.InputPanel m_inp = new Microsoft.WindowsCE.Forms.InputPanel();
public Form()
{
InitializeComponent();
this.m_inp.EnabledChanged += new EventHandler(m_inp_EnabledChanged);
}
void m_inp_EnabledChanged(object sender, EventArgs e)
{
// 在此添加自己需要的处理, 比如下面的语句,当前panel的大小等于桌面显示的大小。
// 一般遇到这种情况都把控件集中到一个panel上面进行集中管理。
m_panel.Size = m_inp.VisibleDesktop.Size;
}
自己试了一下,发现是可以实现的。考虑下面的情况,点击SIP显示,然后再点击SIP隐藏,这时会发现,原本的和窗口一样大的panel居然多了滚动条(这种情况在不同的机器或模拟器上表现的并不相同)。因此可以考虑以下办法改进实现
改进
private Microsoft.WindowsCE.Forms.InputPanel m_inp = new Microsoft.WindowsCE.Forms.InputPanel();
// 保存原来的高度
private m_originalPanelHeight;
public Form()
{
InitializeComponent();
this.m_inp.EnabledChanged += new EventHandler(m_inp_EnabledChanged);
this.m_originalPanelHeight = this.m_panel.Height;
}
void m_inp_EnabledChanged(object sender, EventArgs e)
{
// 注意与上面用法的不同,这里多了判断
// m_panel.Size = m_inp.VisibleDesktop.Size;
if (this.m_inp.Enabled)
{
this. m_panel.Height = this.m_inp.VisibleDesktop.Height;
}
else
{
this. m_panel.Height = m_originalPanelHeight;
}
}
这样,是不是比以前的更稳定和舒服点了呢?当然,如果想设计好更合理更符合操作的控件布局,还需要调整好控件的Anchor和Dock属性。
Good Lcuk!
--------------------------------------------------
李森 – listen
E-mail: lisencool@gmail.com
|
声明:
这里集中了在WinCE和Windows Mobile开发中的一些基本常识。我很乐意和大家分享,也希望大家提出意见,并给我投稿,我会第一时间替您发表并署上您的大名!
Announce:
Here collects general knowledge on WinCE and Windows mobile. I 'm very glad to share them with all friends, and also hope you can share your problems and opinions and contribute articles to me to share with others. I'll publish your articles and sign your name at the first time.
|