Компонент не существует в текущем контексте - C #

1

У меня есть этот код (строки проблем содержат комментарии выше):

private async void btn_loginAdmin_Click(object sender, RoutedEventArgs e)
        {
            // 'txt_adminId' does not exist in the current context.
            if (txt_adminId.Text = "root")
            {
                // 'txt_adminPw' does not exist in the current context.
                if (txt_adminPw.Password = "password")
                {
                    var msg_login = new MessageDialog("Logged in!");
                    await msg_login.ShowAsync();
                }
                else
                {
                    var msg_login = new MessageDialog("Wrong password!");
                    await msg_login.ShowAsync();
                }
            }
            else
            {
                var msg_login = new MessageDialog("Wrong combo!");
                await msg_login.ShowAsync();
            }
        }

У меня всегда была эта проблема с С#. Я не знаю, что это значит. Но я уверен, что в этом файле.xaml эти 2 текстовых поля существуют.

  • Это программа Windows Store С#.

РЕДАКТИРОВАТЬ:

Здесь вывод:

1>C:\Database\GH3_WSE\GH3_WSE\login_admin.xaml.cs(119,17,119,42): error CS0029: Cannot implicitly convert type 'string' to 'bool'
1>C:\Database\GH3_WSE\GH3_WSE\login_admin.xaml.cs(121,21,121,54): error CS0029: Cannot implicitly convert type 'string' to 'bool'
  • 0
    Почему ваш обработчик кликов помечен как асинхронный?
  • 0
    Чтобы заставить MessageDialog работать. Я попытался удалить их, но это не решает проблему.
Показать ещё 5 комментариев
Теги:
scope
store

2 ответа

0

Думаю, вы дважды забыли оператор = на следующих строках:

if (txt_adminId.Text = "root")

должно быть

if (txt_adminId.Text == "root")

а также на этой линии

if (txt_adminPw.Password = "password")

Итак, вы можете написать это:

private async void btn_loginAdmin_Click(object sender, RoutedEventArgs e)
        {
            // 'txt_adminId' does not exist in the current context.

            if (txt_adminId.Text == "root")
            {
                // 'txt_adminPw' does not exist in the current context.
                if (txt_adminPw.Password == "password")
                {
                    var msg_login = new MessageDialog("Logged in!");
                    await msg_login.ShowAsync();
                }
                else
                {
                    var msg_login = new MessageDialog("Wrong password!");
                    await msg_login.ShowAsync();
                }
            }
            else
            {
                var msg_login = new MessageDialog("Wrong combo!");
                await msg_login.ShowAsync();
            }
        }

Кроме того, я бы рекомендовал использовать String.Equals вместо ==, потому что вы хотели бы сравнить значения, а не ссылку. Обратите внимание, что String.Equals сравнивает правильные значения, а == также учитывает их ссылки.

См.: Почему вы должны использовать String.Equals над ==?

0

Проверьте, что x:Class на странице xaml имеет точное имя вашего класса .cs.

Это должно выглядеть так:

x:Class = "ProjectName.C#ClassName"
  • 0
    Они точно такие же.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню