Работа над приложением Windows Mobile 6.5 и возникновение проблемы, которая, я думаю, будет решена автоматически.У меня есть панель в форме, и ее свойство AutoScroll имеет значение true.Имейте текстовое поле, которое показывает панель ввода в фокусе.Для тестирования я помещаю текстовое поле за пределы видимой панели, чтобы вызвать полосу прокрутки.При нажатии на текстовое поле появляется панель ввода, которая в своем событии EnabledChanged изменяет размер панели.Поскольку установка фокуса на элемент управления, находящийся за пределами видимой области, заставляет панель прокручиваться (я это проверил, и она работает как положено), я ожидаю, что при изменении размера панели она будет прокручиваться до сфокусированного текстового поляно это не так.
Вот небольшой демонстрационный код:
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
panel1.Size = this.ClientRectangle.Size;
TextBox t = new TextBox();
t.Size = new Size(100, 20);
// put it out of the panel's bounds
t.Location = new Point(10, 400);
t.GotFocus += new EventHandler(t_GotFocus);
t.LostFocus += new EventHandler(t_LostFocus);
panel1.Controls.Add(t);
t = new TextBox();
t.Size = new Size(100, 200);
t.Location = new Point(10,10);
panel1.Controls.Add(t);
}
void t_LostFocus(object sender, EventArgs e)
{
inputPanel1.Enabled = false;
}
void t_GotFocus(object sender, EventArgs e)
{
inputPanel1.Enabled = true;
}
private void inputPanel1_EnabledChanged(object sender, EventArgs e)
{
if (inputPanel1.Enabled)
panel1.Size = inputPanel1.VisibleDesktop.Size;
else
panel1.Size = this.ClientRectangle.Size;
}
}