参考:
当弹出输入法面板时会挡住一些用户控件,感觉很不好,处理办法就是将控件放在一个Panel中,设置Panel的AutoScroll属性为True,在面板状态改变时同时改变Panel的尺寸。
{
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居然多了滚动条(这种情况在不同的机器或模拟器上表现的并不相同)。因此可以考虑以下办法改进实现
{
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属性。
这里有微软MVP讲您可以去下载教程研究一下,相信会有所帮助!
Good Lcuk!
--------------------------------------------------
|
李森 – listen |
|
声明: Announce: |