c # windows mobile standard - кнопка «Назад» не закрывает приложение - PullRequest
0 голосов
/ 09 октября 2009

Фон приложения все еще там, когда я нажимаю кнопку "Назад". Кто-нибудь знает, что я могу сделать, чтобы предотвратить это? Если я использую Application.Exit (), он работает.

спасибо заранее люблю stackoverflow:)

Ответы [ 4 ]

2 голосов
/ 22 октября 2009

Кнопка «Назад» - это функция Windows Mobile Standard (для смартфона), которая обычно отсутствует в устройствах Windows Mobile Professional или Classic (для карманных ПК).

На уровне собственной операционной системы в следующей статье MSDN под названием « Кнопка« Назад »и другие интересные кнопки » описывается поведение по умолчанию и способы его переопределения или изменения.

В среде .NET CF ознакомьтесь со статьей " Как переопределить клавишу возврата смартфона ", доступной на MSDN. Например, в классе формы вы должны быть в состоянии сделать что-то вроде следующего.

// Connect an event handler to the KeyPress event
this.KeyPress += new KeyPressEventHandler(OnKeyPress);

private void OnKeyPress(object sender, KeyPressEventArgs ke)
{
    // Determine if ESC key value is pressed.
    if (ke.KeyChar == (Char)Keys.Escape)
    {
        // Handle the event to provide functionality.
        ke.Handled = true;

        // Add your event handling code here.
        MessageBox.Show("Back key was pressed.");
    }
}
0 голосов
/ 22 октября 2009

В Windows Mobile вы обычно не завершаете процессы. Когда вы закрываете приложение с помощью кнопки [X] или когда вы переходите на домашний экран, приложение обычно остается запущенным.

Приложение в Windows Mobile не занимает слишком много памяти, поскольку оно не копируется с жесткого диска в оперативную память. Он просто остается на том же месте в ОЗУ, только теперь он «активен». Естественно, ваше приложение должно вести себя хорошо, потребляя как можно меньше ресурсов, когда оно не сфокусировано.

Если вам не нужно это поведение, вы можете выйти из приложения (Application.Exit ()), когда ваша форма теряет фокус. Вы можете легко это уловить с помощью события LostFocus.

Может ли быть так, что на моем устройстве есть кнопка "Назад", на которой напечатан красный телефон?

0 голосов
/ 09 октября 2009

Вы можете использовать встроенную функцию AllKeys и установить для Form.KeyPreview значение true, чтобы получать события KeyDown, когда пользователь нажимает аппаратные клавиши. Добавьте обработчик события KeyDown в форму, поместите точку останова в обработчик KeyDown и нажмите кнопку «назад» и проверьте значение KeyEventArgs.KeyCode. Вы можете установить для KeyEventArgs.Handled значение true, чтобы запретить обработку аппаратных нажатий в Windows Mobile.

Вот информация PInvoke:

[DllImport("coredll.dll", SetLastError = true)]
static extern bool AllKeys(bool bAllKeys);

Вызвать AllKeys (true) для получения событий KeyDown для аппаратных ключей. Вызовите AllKeys (false), чтобы прекратить получать события KeyDown для аппаратных ключей. Официальной документации для этой функции нет, но она существует с Pocket PC 2003. Для получения дополнительной информации см. здесь .

0 голосов
/ 09 октября 2009

Я не совсем уверен, что вы подразумеваете под «кнопкой назад», но поведение по умолчанию в Windows Mobile для всех приложений состоит в том, что кнопка «X» в приложении, которая будет кнопкой «Закрыть» в стандартной Windows , фактически ведет себя как «сворачивание» и перемещает приложение в фоновый режим.

Чтобы действительно "закрыть" приложение, вы обычно заходите в диспетчер задач Windows Mobile и завершаете приложение.

...