WPF登录窗体

          利用闲暇时间帮一个亲戚做一个库存管理系统,由于是一个C/S应用,于是用WPF来做,也是第一次用WPF真正意义上的实践吧,下面是登录窗口相关代码:

<Window x:Class="David.WPF.Login"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="登录" 
    WindowStartupLocation="CenterScreen"
    AllowsTransparency="True"
    Background="Transparent"
    WindowStyle="None"
    ShowInTaskbar="False"
    SizeToContent="WidthAndHeight"
    FocusManager.FocusedElement="{Binding ElementName=txtUserName}">
    <Window.Resources>
        <Style TargetType="Label">
            <Setter Property="Margin"
              Value="4"></Setter>
        </Style>
        <Style TargetType="TextBox">
            <Setter Property="Margin"
              Value="4"></Setter>
            <Setter Property="MinWidth"
              Value="200"></Setter>
            <Setter Property="HorizontalAlignment"
              Value="Left"></Setter>
        </Style>
        <Style TargetType="PasswordBox">
            <Setter Property="Margin"
              Value="4"></Setter>
            <Setter Property="MinWidth"
              Value="200"></Setter>
            <Setter Property="HorizontalAlignment"
              Value="Left"></Setter>
        </Style>
        <Style TargetType="Button">
            <Setter Property="Margin"
              Value="6"></Setter>
            <Setter Property="Padding"
              Value="4"></Setter>
            <Setter Property="MinWidth"
              Value="50"></Setter>
        </Style>
    </Window.Resources>
    <Border CornerRadius="10"
          BorderBrush="Gray"
          BorderThickness="3"
          Background="Beige"
          Margin="24"
          Padding="4">
        <Border.Effect>
            <DropShadowEffect Color="Gray"
                        Opacity=".50"
                        ShadowDepth="16" />
        </Border.Effect>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60" />
                <ColumnDefinition Width="100" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <StackPanel Grid.Column="0"
                  Grid.Row="0"
                  Grid.RowSpan="4">
            	<Image x:Name="imgKey"
            		Margin="8"
            		Source="/David.WPF;component/skin/Key.jpg" Height="155">
            		<Image.Effect>
            			<DropShadowEffect Color="Gray"
            				Opacity=".50"
            				ShadowDepth="8" />
            		</Image.Effect>
            	</Image>
            </StackPanel>
            <Label Grid.Column="1"
             Grid.Row="0"
             Grid.ColumnSpan="2"
             FontSize="18.667"
             Margin="10,10,58,10" FontWeight="Bold" FontFamily="Microsoft YaHei" HorizontalAlignment="Center" VerticalAlignment="Center" Content="合肥佳诚物资库存管理系统V1.0" Foreground="#FFFF003A"/>
            <Label Grid.Column="1"
             Grid.Row="1" Margin="36,4,4,4" FontFamily="Microsoft YaHei" FontSize="13.333" FontWeight="Bold" Content="用户名 :"/>
            <TextBox Grid.Column="2"
               Grid.Row="1"
               ToolTip="请输入用户名"
               Name="txtUserName" Margin="4,4,0,4" Width="161.851" />
            <Label Grid.Column="1"
             Grid.Row="2" Margin="34,4,2,4" Content="密    码 :" FontSize="13.333" FontFamily="Microsoft YaHei" FontWeight="Bold"/>
            <PasswordBox Grid.Column="2"
                   Grid.Row="2"
                   ToolTip="请输入密码"
                   Name="txtPassword" Margin="4,4,0,0" Width="161.851" />
            <StackPanel Grid.Column="2"
                  Grid.Row="3"
                  Margin="10"
                  HorizontalAlignment="Center"
                  Orientation="Horizontal">
                <Button Name="btnLogin"
                IsDefault="True"
                Content="登 录"
                Click="btnLogin_Click" Foreground="#FF006E2A" FontFamily="Microsoft YaHei" FontWeight="Bold" Cursor="Hand">
                    <Button.Effect>
                        <DropShadowEffect Color="Gray"
                              Opacity=".50"
                              ShadowDepth="8" />
                    </Button.Effect>
                </Button>
                <Button x:Name="btnCancel"
                IsCancel="True"
                Content="退 出"
                Click="btnCancel_Click" RenderTransformOrigin="2.64,0.164" Foreground="Red" FontFamily="Microsoft YaHei" FontWeight="Bold" Cursor="Hand">
                    <Button.Effect>
                        <DropShadowEffect Color="Gray"
                              Opacity=".50"
                              ShadowDepth="8" />
                    </Button.Effect>
                </Button>
            </StackPanel>
        </Grid>
    </Border>
</Window>

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 Syit.Model;
using Syit.BLL;
using System.Data;

namespace David.WPF
{
    /// <summary>
    /// Login.xaml 的交互逻辑
    /// </summary>
    public partial class Login : Window
    {
        public Login()
        {
            InitializeComponent();
        }

        private void btnLogin_Click(object sender, RoutedEventArgs e)
        {
            string uname = this.txtUserName.Text.Trim();
            string password = this.txtPassword.Password;
            tb_UsersBLL bll = new tb_UsersBLL();
            DataTable dt = bll.GetData(" UserName='" + uname + "'", "");
            if (dt.Rows.Count > 0)
            {
                //用户名存在
                if (dt.Rows[0]["UserPwd"].ToString().TrimEnd() == password)
                {
                    //密码正确
                    MainWindow mw = new MainWindow(dt.Rows[0]["UserID"].ToString().TrimEnd());
                    this.Close();
                    mw.Show();
                }
                else
                {
                    //密码不正确
                    MessagePopup.Show(this, "密码错误,请重新输入!",250);
                }
            }
            else
            {
                //用户名不存在
                MessagePopup.Show(this, "用户名不存在,请重新输入!", 250);

            }

        }

        private void btnCancel_Click(object sender, RoutedEventArgs e)
        {
            //退出系统
            this.Close();
            Environment.Exit(0); //强制终止应用程序进程
        }
    }
}

这里使用了一个弹出提示窗口的操作类,调用方法是:

MessagePopup.Show(this, "用户名不存在,请重新输入!", 250);
                                                            

该MessagePopup类代码如下:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using System.Windows.Threading;

namespace David.WPF
{
    public sealed class MessagePopup
    {
        public static void Show(UIElement parent, string message,double width)
        {
            parent.Dispatcher.Invoke(DispatcherPriority.Background, new Action(() =>
                {
                    Popup popup = new Popup();
                    popup.StaysOpen = true;
                    popup.PlacementTarget = parent;
                    popup.Placement = PlacementMode.Center;

                    Border aroundBorder = new Border();
                    aroundBorder.BorderThickness = new Thickness(2);
                    aroundBorder.BorderBrush = Brushes.SteelBlue;

                    StackPanel aroundStackPanel = new StackPanel();
                    aroundStackPanel.MinWidth = width;
                    aroundStackPanel.MinHeight = 120;
                    aroundStackPanel.MaxWidth = 480;
                    aroundStackPanel.Background = Brushes.White;
                    aroundStackPanel.Orientation = Orientation.Vertical;
                    aroundStackPanel.FlowDirection = FlowDirection.LeftToRight;

                    DockPanel headDockPanel = new DockPanel();
                    headDockPanel.VerticalAlignment = VerticalAlignment.Top;
                    headDockPanel.Background = Brushes.SteelBlue;

                    TextBlock headTextBlock = new TextBlock();
                    headTextBlock.Margin = new Thickness(10, 0, 0, 0);
                    headTextBlock.Text = "提示";
                    headTextBlock.Height = 26;
                    headTextBlock.HorizontalAlignment = HorizontalAlignment.Left;
                    headTextBlock.VerticalAlignment = VerticalAlignment.Center;
                    headTextBlock.FontSize = 16;
                    headTextBlock.Focusable = false;
                    headTextBlock.IsHitTestVisible = false;
                    headTextBlock.Background = Brushes.SteelBlue;
                    headTextBlock.Foreground = Brushes.White;

                    TextBlock messageTextBlock = new TextBlock();
                    messageTextBlock.Text = message;
                    messageTextBlock.Margin = new Thickness(20, 20, 20, 10);
                    messageTextBlock.MinHeight = 28;
                    messageTextBlock.VerticalAlignment = VerticalAlignment.Top;
                    messageTextBlock.HorizontalAlignment = HorizontalAlignment.Left;
                    messageTextBlock.TextWrapping = TextWrapping.Wrap;

                    Button okButton = new Button();
                    okButton.Content = "OK";
                    okButton.Margin = new Thickness(0, 0, 20, 10);
                    okButton.Padding = new Thickness(25, 3, 25, 3);
                    okButton.HorizontalAlignment = HorizontalAlignment.Right;
                    okButton.Click += delegate
                    {
                        popup.IsOpen = false;
                        parent.IsEnabled = true;
                    };

                    headDockPanel.Children.Add(headTextBlock);
                    aroundStackPanel.Children.Add(headDockPanel);
                    aroundStackPanel.Children.Add(messageTextBlock);
                    aroundStackPanel.Children.Add(okButton);
                    aroundBorder.Child = aroundStackPanel;
                    popup.Child = aroundBorder;

                    parent.IsEnabled = false;
                    popup.IsOpen = true;
                }));
        }
    }
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值