1. 程式人生 > >WPF學習分享(二)——彈出文字輸入框

WPF學習分享(二)——彈出文字輸入框

彈出文字輸入框


原本以為WPF彈出文字輸入框很簡單,結果查了一下發現沒有。。。雖然有一些第三方的控制元件,但是由於想要自己實現一個,所以就折騰了一下。


首先需要建立一個窗體,而不是使用者控制元件,一開始被這個坑到了一下。

  • Login.xaml.cs
    public partial class Login : Window
    {

        public User user;
        public Login()
        {
        	//視窗居中
            WindowStartupLocation =
WindowStartupLocation.CenterScreen; InitializeComponent(); this.Width = 300; this.Height = 150; } private void Commit(object sender, RoutedEventArgs e) { //業務邏輯。。。。 DialogResult = true; Close(); } private
void Cancel(object sender, RoutedEventArgs e) { DialogResult = false; } }
  • Login.xaml
<Window x:Class="AdressBook.Login"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:
mc
="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:AdressBook" mc:Ignorable="d" d:DesignHeight="100" d:DesignWidth="200" Background="AliceBlue">
<StackPanel> <Label Content="請輸入使用者的id" HorizontalAlignment="Center" x:Name="Theme"/> <Grid Height="30" Margin="0 10 0 10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="8*"/> </Grid.ColumnDefinitions> <Label Grid.Column="0" HorizontalAlignment="Center" Content="id" x:Name="Input"/> <TextBox TextWrapping="Wrap" x:Name="id" Grid.Column="1"/> </Grid> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Button Grid.Column="0" Content="確認" Click="Commit" HorizontalAlignment="Center"/> <Button Grid.Column="1" Content="取消" HorizontalAlignment="Center" Click="Cancel"/> </Grid> </StackPanel> </Window>

一個自定義的簡單彈窗就建立好了。這個窗體主要的不同就是cs程式碼裡面對DialogResult的賦值。


接下來就是在父窗體彈出視窗了。

			//擷取部分程式碼
            Login login = new Login();
            Hide();
            login.ShowDialog();
            if (login.DialogResult == true)
            {
            	......
                Show();
            }
            else
            {
                Environment.Exit(Environment.ExitCode);
            }

只需要呼叫ShowDialog這個函式就可以了,在DialogResult沒有賦值之前,ShowDialog之後的程式碼不會執行,一開始不知道,結果走了很多彎路(〒︿〒)