ARTICLE

Login and registration process in WPF application

Posted by Purushottam Rathore Articles | WPF September 15, 2010
In this article, I am creating a simple application for login and registration using WPF in visual studio 2010.
Reader Level:
Download Files:
 

Introduction:

In this article I am creating a simple application for login and registration using WPF in visual studio 2010. In this application I am creating two window forms one is for Registration and another is for login. First of all user will register after then he/she can login.

 

Now I am going to discuss in brief about this application.

 

Step1: Open Visual Studio 2010 -> File -> New -> Project.


New project template will display and select WPF Application like as follows:

NewProject1.png

Figure 1:

Step 2: Enter your project name and click on OK button.

 

Step 3: You will get the MainWindow.xaml window form, if you want to change then rename it and also change the StartupUri property of application into App.xaml like as follows:

 

App.xaml:

<Application x:Class="Login_WPF.App"

             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

             StartupUri="Registration.xaml">

    <Application.Resources></Application.Resources>

</Application>

 

Step 4: Now design your Registration page as figure 2 or copy and page following inline code.

 

Registration.xaml:

<Window x:Class="Login_WPF.Registration"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="Registration" Height="387" Width="528" Background="Black">

    <Grid  Height="350" Width="525" Background="Bisque">

        <TextBlock Height="23" HorizontalAlignment="Left" Margin="10,5,0,0" Name="textBlockHeading" Text="Registration:" VerticalAlignment="Top" Width="110"  FontSize="17" FontStretch="ExtraCondensed"/>

        <!--Button as a Link button using style-->

        <Button Margin="451,5,12,288" Content="Login" Cursor="Hand" Click="Login_Click">

            <Button.Template>

                <ControlTemplate TargetType="Button">

                    <TextBlock TextDecorations="Underline">

                    <ContentPresenter />

                    </TextBlock>

                </ControlTemplate>

            </Button.Template>

            <Button.Style>

                <Style TargetType="Button">

                    <Setter Property="Foreground" Value="Navy" />

                    <Style.Triggers>

                        <Trigger Property="IsMouseOver" Value="true">

                            <Setter Property="Foreground" Value="Red" />

                        </Trigger>

                    </Style.Triggers>

                </Style>

            </Button.Style>

        </Button>

        <!--end Button as a Link button using style-->

        <Grid Margin="31,0,29,23" Background="White" Height="264" VerticalAlignment="Bottom">

            <Grid.RowDefinitions>

                <RowDefinition Height="252*" />

                <!--   <RowDefinition Height="12*" />-->

            </Grid.RowDefinitions>

            <TextBlock Height="20" HorizontalAlignment="Left" Margin="67,0,0,0" x:Name ="errormessage" VerticalAlignment="Top" Width="247"  OpacityMask="Crimson" Foreground="#FFE5572C" />

            <TextBlock Height="23" HorizontalAlignment="Left" Margin="67,20,0,0" Name="textBlockFirstname" Text="First Name:" VerticalAlignment="Top" Width="110" />

            <TextBlock Height="23" HorizontalAlignment="Left" Margin="67,50,0,0" Name="textBlockLastName" Text="Last Name:" VerticalAlignment="Top" Width="110" />

            <TextBlock Height="23" HorizontalAlignment="Left" Margin="67,80,0,0" Name="textBlockEmailId" Text="EmailId" VerticalAlignment="Top" Width="110" />

            <TextBlock Height="23" HorizontalAlignment="Left" Margin="67,107,0,0" Name="textBlockPassword" Text="Password:" VerticalAlignment="Top" Width="110"  />

            <TextBlock Height="23" HorizontalAlignment="Left" Margin="67,136,0,0" Name="textBlockConfirmPwd" Text="ConfirmPassword:" VerticalAlignment="Top" Width="110" Grid.RowSpan="2" />

            <TextBlock Height="23" HorizontalAlignment="Left" Margin="67,166,0,0" Name="textBlockAddress" Text="Address" VerticalAlignment="Top" Width="110" />

 

            <TextBox Height="23" HorizontalAlignment="Left" Margin="183,20,0,0" Name="textBoxFirstName" VerticalAlignment="Top" Width="222" />

            <TextBox Height="23" HorizontalAlignment="Left" Margin="183,50,0,0" Name="textBoxLastName" VerticalAlignment="Top" Width="222" />

            <TextBox Height="23" HorizontalAlignment="Left" Margin="183,80,0,0" Name="textBoxEmail" VerticalAlignment="Top" Width="222" />

 

            <PasswordBox Height="23" HorizontalAlignment="Left" Margin="183,107,0,0" Name="passwordBox1" VerticalAlignment="Top" Width="222" />

            <!--For password-->

            <PasswordBox Height="23" HorizontalAlignment="Left" Margin="183,136,0,0" Name="passwordBoxConfirm" VerticalAlignment="Top" Width="222" />

            <TextBox Height="23" HorizontalAlignment="Left" Margin="183,0,0,66" Name="textBoxAddress" VerticalAlignment="Bottom" Width="222" />

            <Button Content="Submit" Height="23" HorizontalAlignment="Left" Margin="183,204,0,0" Name="Submit" VerticalAlignment="Top" Width="70" Click="Submit_Click" />

            <Button Content="Reset" Height="23" HorizontalAlignment="Left" Margin="259,204,0,0" Name="button2" VerticalAlignment="Top" Width="70" Click="button2_Click" />

            <Button Content="Cancel" Height="23" HorizontalAlignment="Right" Margin="0,204,60,0" Name="button3" VerticalAlignment="Top" Width="70" Click="button3_Click" />

        </Grid>

    </Grid>

</Window>

registration.png

Figure 2: Registration form

 

Registration.xaml.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Shapes;

using System.Data;

using System.Data.SqlClient;

using System.Text.RegularExpressions;

 

namespace Login_WPF

{

    /// <summary>

    /// Interaction logic for Registration.xaml

    /// </summary>

    public partial class Registration : Window

    {

        public Registration()

        {

            InitializeComponent();

        }

 

        private void Login_Click(object sender, RoutedEventArgs e)

        {

            Login login = new Login();

            login.Show();

            Close();

        }

 

        private void button2_Click(object sender, RoutedEventArgs e)

        {

            Reset();

        }

 

        public void Reset()

        {

            textBoxFirstName.Text = "";

            textBoxLastName.Text = "";

            textBoxEmail.Text = "";

            textBoxAddress.Text = "";

            passwordBox1.Password = "";

            passwordBoxConfirm.Password = "";

        }

        private void button3_Click(object sender, RoutedEventArgs e)

        {

            Close();

        }

 

        private void Submit_Click(object sender, RoutedEventArgs e)

        {

            if (textBoxEmail.Text.Length == 0)

            {

                errormessage.Text = "Enter an email.";

                textBoxEmail.Focus();

            }

            else if (!Regex.IsMatch(textBoxEmail.Text, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"))

            {

                errormessage.Text = "Enter a valid email.";

                textBoxEmail.Select(0, textBoxEmail.Text.Length);

                textBoxEmail.Focus();

            }

            else

            {

                string firstname = textBoxFirstName.Text;

                string lastname = textBoxLastName.Text;

                string email = textBoxEmail.Text;

                string password = passwordBox1.Password;

                if (passwordBox1.Password.Length == 0)

                {

                    errormessage.Text = "Enter password.";

                    passwordBox1.Focus();

                }

                else if (passwordBoxConfirm.Password.Length == 0)

                {

                    errormessage.Text = "Enter Confirm password.";

                    passwordBoxConfirm.Focus();

                }

                else if (passwordBox1.Password != passwordBoxConfirm.Password)

                {

                    errormessage.Text = "Confirm password must be same as password.";

                    passwordBoxConfirm.Focus();

                }

                else

                {

                    errormessage.Text = "";

                    string address = textBoxAddress.Text;

                    SqlConnection con = new SqlConnection("Data Source=TESTPURU;Initial Catalog=Data;User ID=sa;Password=wintellect");

                    con.Open();

                    SqlCommand cmd = new SqlCommand("Insert into Registration (FirstName,LastName,Email,Password,Address) values('" + firstname + "','" + lastname + "','" + email + "','" + password + "','" + address + "')", con);

                    cmd.CommandType = CommandType.Text;

                    cmd.ExecuteNonQuery();

                    con.Close();

                    errormessage.Text = "You have Registered successfully.";

                    Reset();

                }

            }

        }

    }

}

 

Now I am taking another form for login as follows:

Login.xaml:

<Window x:Class="Login_WPF.Login"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="Login" Height="350" Width="525">

    <Grid>

        <TextBlock Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="LoginHeading" Text="Login:" VerticalAlignment="Top" FontSize="17" FontStretch="ExtraCondensed"/>

        <TextBlock Height="50" HorizontalAlignment="Left" Margin="24,48,0,0" Name="textBlockHeading" VerticalAlignment="Top" FontSize="12" FontStyle="Italic" Padding="5">

            Note: Please login here to view the features of this site. If you are new on this site then <LineBreak /><!--line break-->

            please click on

           <!--textblock as a Hyperlink.-->

            <TextBlock>

                 <Hyperlink Click="buttonRegister_Click" FontSize="14" FontStyle="Normal">Register</Hyperlink>

            </TextBlock>

            <!--end textblock as a hyperlink-->

            button

        </TextBlock>

 

        <TextBlock Height="23" HorizontalAlignment="Left" Margin="66,120,0,0" Name="textBlock1" Text="Email" VerticalAlignment="Top" Width="67" />

        <TextBlock Height="23" HorizontalAlignment="Left" Margin="58,168,0,0" Name="textBlock2" Text="Password" VerticalAlignment="Top" Width="77" />

        <TextBox Height="23" HorizontalAlignment="Left" Margin="118,115,0,0" Name="textBoxEmail" VerticalAlignment="Top" Width="247" />

        <PasswordBox Height="23" HorizontalAlignment="Left" Margin="118,168,0,0" Name="passwordBox1" VerticalAlignment="Top" Width="247" />

        <Button Content="Login" Height="23" HorizontalAlignment="Left" Margin="118,211,0,0" Name="button1" VerticalAlignment="Top" Width="104" Click="button1_Click" />

        <TextBlock Height="23" HorizontalAlignment="Left" x:Name ="errormessage" VerticalAlignment="Top" Width="247" Margin="118,253,0,0"  OpacityMask="Crimson" Foreground="#FFE5572C"  />

    </Grid>

</Window> 

 

login.png
 

Figure 3: Login form.

 

Login.xaml.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Data;

using System.Data.SqlClient;

using System.Text.RegularExpressions;

 

namespace Login_WPF

{

    /// <summary>

    /// Interaction logic for MainWindow.xaml

    /// </summary> 

 

    public partial class Login : Window

    {

        public Login()

        {

            InitializeComponent();

        }

        Registration registration = new Registration();

        Welcome welcome = new Welcome();

 

        private void button1_Click(object sender, RoutedEventArgs e)

        {

            if (textBoxEmail.Text.Length == 0)

            {

                errormessage.Text = "Enter an email.";

                textBoxEmail.Focus();

            }

            else if (!Regex.IsMatch(textBoxEmail.Text, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"))

            {

                errormessage.Text = "Enter a valid email.";

                textBoxEmail.Select(0, textBoxEmail.Text.Length);

                textBoxEmail.Focus();

            }

            else

            {

                string email = textBoxEmail.Text;

                string password = passwordBox1.Password;

                SqlConnection con = new SqlConnection("Data Source=TESTPURU;Initial Catalog=Data;User ID=sa;Password=wintellect");

                con.Open();

                SqlCommand cmd = new SqlCommand("Select * from Registration where Email='" + email + "'  and password='" + password + "'", con);

                cmd.CommandType = CommandType.Text;

                SqlDataAdapter adapter = new SqlDataAdapter();

                adapter.SelectCommand = cmd;

                DataSet dataSet = new DataSet();

                adapter.Fill(dataSet);

                if (dataSet.Tables[0].Rows.Count > 0)

                {

                    string username = dataSet.Tables[0].Rows[0]["FirstName"].ToString() + " " + dataSet.Tables[0].Rows[0]["LastName"].ToString();

                    welcome.TextBlockName.Text = username;//Sending value from one form to another form.

                    welcome.Show();

                    Close();

                }

                else

                {

                    errormessage.Text = "Sorry! Please enter existing emailid/password.";

                }

                con.Close();

            }

        }

 

        private void buttonRegister_Click(object sender, RoutedEventArgs e)

        {

            registration.Show();

            Close();

        }

 

    }

}

Welcome.xaml:


<Window x:Class="Login_WPF.Welcome"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="Welcome" Height="250" Width="400">

    <Grid>

        <TextBlock Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" x:Name="WelcomeHeading" Text="Welcome:" VerticalAlignment="Top" FontSize="17" FontStretch="ExtraCondensed"/>

        <TextBlock Height="23" HorizontalAlignment="Left" Margin="90,10,0,0" x:Name="TextBlockName"  VerticalAlignment="Top" FontSize="15" FontStretch="ExtraCondensed" />

    </Grid>

</Window>

 

At last if user login successfully then welcome message will display on another form as shown below:

 

welcome.png
 

Figure 4:

Login to add your contents and source code to this article
Article Extensions
Contents added by KiranS subramanian on Dec 26, 2012
sir should create database table
post comment
     

??????? ??????? ???! ??? ????? ??????? ???? ??????.

Posted by Dmitry Komandin Dec 19, 2012

It doesn't work because I need the SQL setup. I know how to create a database but sure what all this represents. ("Data Source=TESTPURU;Initial Catalog=Data;User ID=sa;Password=wintellect");

Posted by L Van Oct 10, 2011

For best practice, shouldn't you keep the SQL separate from this and probably in a stored procedure? I'm very new to this and am trying to learn the correct way.

Posted by L Van Sep 20, 2011

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) what i should do???

Posted by mada sattar Jun 30, 2011

Please verify the value of firstname should not be null.

Posted by Purushottam Rathore May 30, 2011
COMMENT USING
PREMIUM SPONSORS
Over-C is a holistic consortium of communications and technology specialists. We build, deploy and market both business as well as consumer products and solutions.
Join a Chapter
SPONSORED BY
  • PDF reports have never been easier to create. With our included WYSIWYG Designer, you can layout your reports, set up your data source and let DynamicPDF ReportWriter do the rest.
Get Career Advice from Experts