Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
Favorskij
8 / 8 / 0
Регистрация: 27.07.2010
Сообщений: 316
#1

Сверить что бы были два одинаковых пароля - C# WPF

24.10.2015, 23:18. Просмотров 290. Ответов 9
Метки нет (Все метки)

Как сверить что бы было два одинаковых пароля? Если второй пароль не совпадает, то что бы рядышком появлялось сообщение что пароль не правильный, и, пока второй пароль будет не правильный, что бы кнопка была не активна. Как только два пароля будут совпадать, тогда кнопка станет активной.

Спасибо.

XML
1
2
3
4
5
6
<Grid HorizontalAlignment="Left" Height="131" Margin="137,142,0,0" VerticalAlignment="Top" Width="80">
            <PasswordBox x:Name="passwordBox2" Margin="7,0,9,0" VerticalAlignment="Top" d:LayoutOverrides="Width, LeftPosition, RightPosition"/>
            <PasswordBox x:Name="passwordBox3" Margin="7,46,9,53" d:LayoutOverrides="Width, Height, LeftPosition, RightPosition, TopPosition, BottomPosition"/>
            <Button x:Name="button1" Content="Button" VerticalAlignment="Bottom" HorizontalAlignment="Stretch" d:LayoutOverrides="Width, LeftPosition, RightPosition"/>
 
        </Grid>
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2015, 23:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сверить что бы были два одинаковых пароля (C# WPF):

Добавить два одинаковых дочерних элемента - C# WPF
Здравствуйте. Подскажите пожалуйста как добавить два одинаковых: inkCanvas1.Children.Add(inkCanvas1.Resources as Path); При...

Сверить два списка - C#
Помогите... Как найти значение &quot;Новом списке&quot; которое не встречается в &quot;Старом списке&quot;? или Как проверить на остуствии в &quot;Старом...

Что будет просисходить в оперативке, если запустить два одинаковых процесса? - Оперативная память
У меня возник вопрос: Если запустить два одинаковых процесса (например два браузера) каждый из которых занимает 2 мб, что будет...

Проверить, что в массиве, введенном с клавиатуры, есть два соседних одинаковых элемента - C++
Привет. Нуждаюсь в помощи!!! Нужно написать программу, какая выводит, что в массиве, введенном с клавиатуры, есть два соседних между собой...

Отсортировать два массива так, что бы первые 14 элементов 1 массива были в порядке возрастания - C (СИ)
Доброго времени суток! Хочу отсортировать два массива так, что бы первые 14 элементов 1 массива были в порядке возрастания, и последние...

Определить, что в строках матрицы с одинаковыми номерами совпадают хотя бы два элемента на одинаковых позициях - Turbo Pascal
Сформировать из случайных чисел две матрицы 7х7. если в строках с одинаковыми номерами совпадают хотя бы два элемента на одинаковых...

9
ViterAlex
5843 / 3063 / 919
Регистрация: 11.02.2013
Сообщений: 6,705
Завершенные тесты: 3
25.10.2015, 01:56 #2
Я попытался реализовать это через привязку Command с предикатом CanExecute, но не знаю как заставить работать при вводе. Может более опытные поправят
Окно
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<Window x:Class="PasswordChecker.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:PasswordChecker"
        mc:Ignorable="d"
        Title="MainWindow"
        Height="139.276"
        Width="272.675">
    <Window.Resources>
        <local:Converter x:Key="Converter" />
    </Window.Resources>
    <Grid>
        <Grid.DataContext>
            <local:Login />
        </Grid.DataContext>
        <StackPanel>
            <StackPanel Height="32"
                        Orientation="Horizontal">
                <Label Content="Пароль:"
                       VerticalAlignment="Center"
                       HorizontalAlignment="Left" />
                <PasswordBox x:Name="pass"
                             HorizontalAlignment="Right"
                             VerticalAlignment="Center"
                             Width="109"
                             Password="1111" />
            </StackPanel>
            <StackPanel Height="32"
                        Orientation="Horizontal">
                <Label Content="Подтверждение:"
                       VerticalAlignment="Center"
                       HorizontalAlignment="Left" />
                <PasswordBox x:Name="passconfirm"
                             HorizontalAlignment="Right"
                             VerticalAlignment="Center"
                             Width="109"
                             Password="1111" />
            </StackPanel>
            <Button Content="Войти"
                    HorizontalAlignment="Right"
                    Margin="0,0,10,0"
                    Command="{Binding LoginCommand}">
                <Button.CommandParameter>
                    <MultiBinding Converter="{StaticResource Converter}">
                        <Binding Path="Password"
                                 ElementName="pass" />
                        <Binding ElementName="passconfirm"
                                 Path="Password" />
                    </MultiBinding>
                </Button.CommandParameter>
            </Button>
        </StackPanel>
 
    </Grid>
</Window>

Класс, выполняющий проверку введённых паролей и активацию кнопки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System.Windows.Input;
namespace PasswordChecker {
    class Login {
        private RelayCommand<string[]> _login;
 
        public RelayCommand<string[]> LoginCommand {
            get { return _login; }
            set { _login = value; }
        }
 
        public Login() {
            _login = new RelayCommand<string[]>(ExecuteLogin, CanExecuteLogin);
        }
 
        private void ExecuteLogin(string[] passwords) {
            //Тут вход с подстановкой пароля
        }
 
        private bool CanExecuteLogin(string[] passwords) {
            if (passwords == null) {
                return false;
            }
            string password = passwords[0];
            string passwordEntered = passwords[1];
            return password != string.Empty && password.Equals(passwordEntered);
        }
    }
}

Конвертер для CommandParameter
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Globalization;
using System.Windows.Data;
 
namespace PasswordChecker {
    class Converter : IMultiValueConverter {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) {
            return new string[] { (string)values[0], (string)values[1] };
        }
 
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) {
            throw new NotImplementedException();
        }
    }
}
0
Вложения
Тип файла: zip PasswordChecker.zip (16.6 Кб, 4 просмотров)
Favorskij
8 / 8 / 0
Регистрация: 27.07.2010
Сообщений: 316
25.10.2015, 11:41  [ТС] #3
Цитата Сообщение от ViterAlex Посмотреть сообщение
Я попытался реализовать это через привязку Command с предикатом CanExecute, но не знаю как заставить работать при вводе. Может более опытные поправят
Спасибо большое, я позже все это дело проверю.
0
Ev_Hyper
Заблокирован
25.10.2015, 13:55 #4
ViterAlex, думаю, это специфика элемента PasswordBox

Favorskij, http://habrahabr.ru/post/169231/
0
And22
3 / 3 / 1
Регистрация: 01.02.2015
Сообщений: 44
25.10.2015, 18:27 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
я бы привязал событие PasswordChanged обоих элементов к одному методу в котором проверял пароли на совпадение:
XML
1
2
 <PasswordBox x:Name="pb1" HorizontalAlignment="Left" Margin="215,205,0,0" VerticalAlignment="Top" Width="150" PasswordChanged="pb_PasswordChanged"/>
        <PasswordBox x:Name="pb2" HorizontalAlignment="Left" Margin="215,230,0,0" VerticalAlignment="Top" Width="150" PasswordChanged="pb_PasswordChanged"/>
C#
1
2
3
4
5
6
 private void pb_PasswordChanged(object sender, RoutedEventArgs e)
        {
            if (pb1.Password != pb2.Password)
            { button1.IsEnabled = false; return; }
            else button1.IsEnabled = true;
        }
1
Favorskij
8 / 8 / 0
Регистрация: 27.07.2010
Сообщений: 316
25.10.2015, 20:16  [ТС] #6
Цитата Сообщение от And22 Посмотреть сообщение
я бы привязал событие PasswordChanged обоих элементов к одному методу в котором проверял пароли на совпадение:
Да, сработало. Спасибо. А как можно рядышком что бы сообщение какое нибудь появлялось что пароль не совпадает. А то человек и не поймет что такое, а так хоть будет знать что пароль не совпадает. Только если можно, желательно не что бы новое окно появлялось с сообщение а просто рядом надпись какая нибудь. Или тоже самое можно проделать с TextBox ?

Добавлено через 47 секунд
Ща попробую )))
0
Ev_Hyper
Заблокирован
25.10.2015, 20:44 #7
And22, можно так:
C#
1
button1.IsEnabled = pb1.Password == pb2.Password
0
Favorskij
8 / 8 / 0
Регистрация: 27.07.2010
Сообщений: 316
25.10.2015, 21:50  [ТС] #8
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
можно так:
А как полностью? )))

Добавлено через 12 минут
Цитата Сообщение от And22 Посмотреть сообщение
я бы привязал событие PasswordChanged обоих элементов к одному методу в котором проверял пароли на совпадение:
А как сделать тоже самое с кнопкой и полями пароля, но только что бы нужно ввести минимум символов пароля, например если меньше пяти символов пароля указал, то кнопка не активна, указал больше пяти, кнопка активна.
0
And22
3 / 3 / 1
Регистрация: 01.02.2015
Сообщений: 44
25.10.2015, 23:28 #9
Favorskij, для вывода сообщения о несовпадении пароля в вашем случае можно использовать label, хотя я ни разу не встречал, чтобы при таком подходе выводили сообщение о несовпадении пароля, как то не эстетично выглядит. Другое дело, если вы вы нажали кнопу, и выскочило сообщение. Что касается кол-ва символов то достаточно добавить условие
C#
1
 pb1.Password.Length>5
в обработчик

C#
1
2
3
if (pb1.Password != pb2.Password)
            { button1.IsEnabled = false; return; }
            else if (pb1.Password.Length>5) button1.IsEnabled = true;
Добавлено через 8 минут

или в таком виде, как предложил , Ev_Hyper,

C#
1
2
3
4
5
6
7
private void pb_PasswordChanged(object sender, RoutedEventArgs e)
        {
            if(pb1.Password.Length>5) 
            button1.IsEnabled = pb1.Password == pb2.Password;
 
        }
    }
1
Favorskij
8 / 8 / 0
Регистрация: 27.07.2010
Сообщений: 316
27.10.2015, 18:12  [ТС] #10
And22 Спасибо большое. Позже все это дело проверю. У меня тут просто проблемка Ошибка при создании приложения для настольных и мобильных устройств
0
27.10.2015, 18:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2015, 18:12
Привет! Вот еще темы с ответами:

среди чисел k,l,r два одинаковых,а в третье отлично от них.Переменной n присвоить значение числа,отличного от двух одинаковых - C++
среди чисел k,l,r два одинаковых,а в третье отлично от них.Переменной n присвоить значение числа,отличного от двух одинаковых

Верно ли, что в записи четырехзначного числа использованы два одинаковых двузначных числа? - C#
Дано четырехзначное число. Верно ли, что в записи этого числа использованы два одинаковых двузначных числа?

Как прочитать вторую строку и сверить ее с тем, что ввел пользователь - PHP
вот частичка кода для авторизации: ftp_get($connect, &quot;usergrab.data&quot;,&quot;user/users/&quot;.$login,FTP_BINARY);...

Как правильно подставить вручную? Что бы потом решить в matlab и сверить - Математика
Как правильно подставить в такое уравнение значения вручную чтобы получить точки и построить график? 16x2+20xy+8y2=1 Что бы потом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru