传智播客WPF视频 第二节

本文介绍了WPF中的多种控件使用方法,包括文本框、密码框、复选框、单选按钮等,并详细讲解了Grid布局、菜单及工具栏的应用。此外,还涉及了多窗口间的简单交互原理及对话框的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Textbox 和 PasswordBox

    Textbox     属性:Text 

    PasswordBox属性:Password

            if (TbAdmin.Text == "admin" && PwdPassword.Password =="asuna")
            {
                MessageBox.Show("登陆成功");
            } 
            else
            {
                MessageBox.Show("登录失败,请从新输入");
            }

2.CheckBox 与可空类型

如何定义可空类型: int? bool?

可空类型的用处很多 不少控件也是此种属性。

CheckBox的是否选中:

 if ((bool)CBbox.IsChecked)
            {
                MessageBox.Show("选中了");
            }

3.四个控件的使用

RadioButton:常用属性GroupName用来确定radioButton所属群体。

DataPicker:选择日期控件。 datePicker1.SelectedDate = DateTime.Today;

Image:常用属性:Source

ProgressBar:

 progressBar1.Value += 10;
            if (progressBar1.Value >= 60)
            {
                progressBar1.Foreground = Brushes.Red;
            }


4.StackPanel

//①StackPanel 可以使控件按照默认的顺序排列

<StackPanel Background =" Green" Orientation ="Horizontal" >
Orientation ="Horizontal" :设置空间水平摆放
//②在Button内容里使用Stacakpanel可以设置多项内容。
<Button.Content>
  <StackPanel Orientation ="Horizontal">
    	<Image Source ="asuna.jpg"></Image>
       <TextBox Text ="确定¨"></TextBox>
  </StackPanel>
</Button.Content>

5.Grid表格控件,可以控制几行几列。

<Grid>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
     
            </Grid.ColumnDefinitions>
            <TextBlock Text ="用户名:" Grid.Row ="0"  Grid.Column ="0"  HorizontalAlignment ="Center" VerticalAlignment ="Center" FontSize ="28" Foreground ="SkyBlue"></TextBlock>
            <TextBlock Text ="密码:"   Grid.Row ="1" Grid.Column ="0"  HorizontalAlignment ="Center" VerticalAlignment ="Center" FontSize ="28" Foreground ="SkyBlue"></TextBlock>
            <TextBox Text ="" Grid.Row ="0" Grid.Column ="1" Margin ="20" FontSize ="32"></TextBox>
            <PasswordBox Password ="" Grid.Row ="1" Grid.Column ="1" Margin ="20" FontSize ="32"></PasswordBox>
            <Button Content ="登录" Margin ="20" Grid.Column =" 0" Grid.Row ="2" Background ="Gold" FontSize ="20" Foreground ="LightBlue" ></Button>
            <Button Content ="取消" Margin ="20" Grid.Column ="1" Grid.Row ="2" Background ="Gold" FontSize ="20" Foreground ="LightBlue" ></Button>
            <TextBlock Text ="请选择相应的操作" Margin ="20" Grid.Row ="3" Grid.Column ="0" Grid.ColumnSpan ="2" FontSize ="28" Foreground ="Green" HorizontalAlignment ="Center"></TextBlock>
        </Grid>
    </Grid>



6.用Grid布局生成连连看布局。

<Grid>
        <Grid Name="gameGrid">
            
        </Grid>
</Grid>

 private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 10; ++i )
            {
                RowDefinition    rowDef = new RowDefinition();
                ColumnDefinition colDef = new ColumnDefinition();

                gameGrid.ColumnDefinitions.Add(colDef);
                gameGrid.RowDefinitions.Add(rowDef);

            }

            Random random = new Random();

            for (int i = 0; i < 10; ++i )
            {
                for (int j = 0; j < 10; ++j )
                {
                    int iImage = random.Next(0, 10);
                    Image img = new Image();
                    img.Source = new BitmapImage(new Uri("Image/" + iImage + ".ico", UriKind.Relative));
                    Grid.SetRow(img, i);
                    Grid.SetColumn(img, j);
                    gameGrid.Children.Add(img);
                }
            }
        }

7.布局的嵌套

<Grid>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <StackPanel Grid.Column ="0" Grid.Row ="1">
                <Button Content ="Hello"></Button>
                <Button Content ="WPF"></Button>
            </StackPanel>
            <StackPanel Grid.Column ="1">
                <Button Content ="Hello"></Button>
                <Button Content ="WPF"></Button>
            </StackPanel>
        </Grid>
    </Grid>

8.Menu 和DockPanel的使用

1.Menu嵌套使用。

2.DockPanel布局可以设置内部控件的对齐方式。

<Grid>
        <DockPanel>
            <Menu Width="300" Height="20" DockPanel.Dock ="Top">
                <MenuItem Header="文件">
                    <MenuItem Header="新建" Name="miNew" Click="miNew_Click"></MenuItem>
                    <MenuItem Header="打开"></MenuItem>
                    <MenuItem Header="保存"></MenuItem>
                </MenuItem>
                <MenuItem Header="操作">
                    <MenuItem Header="复制"></MenuItem>
                    <MenuItem Header="黏贴"></MenuItem>
                </MenuItem>
            </Menu>
            
            <ToolBar DockPanel.Dock ="Bottom">
                <Button Content ="Ha"></Button>
                <Button Content ="Ha"></Button>
            </ToolBar>
        </DockPanel>
        
    </Grid>

9.ToolBar工具条的使用

1.在工具条上使用按钮控件,按钮会发生变化。可以在按钮上加载图片让按钮好看。在按钮上响应事件

2.DockPanel按照先后的顺序排列。


10.多窗口的基础。

1.右击项目-添加-窗口

2.在响应的事件中添加创建显示窗口的代码

3.设置初始显示什么对话框 修改 App.XAML中的StartUpUri.

4.通过修改 title 来修改标题,ResizeMode来修改窗口缩放模式,

WindowsStartUpLocation来修改窗口显示的位置,WindowState修改窗口初始化模式

5.如何实现两个窗口之间的交互。

很简单 ,将两个窗口看成两个类。 父窗口响应的事件中 定义string,子窗口中定义并且封装string字段。

然后 父窗口中 new子窗口类的对象,对象引用string 然后赋值。

子类得到响应的string之后然后通过其他方式在呈现出来。


主窗口的XAML:

<Window x:Class="多窗口.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DockPanel>
            <Menu  Height ="20" DockPanel.Dock ="Top">
                <MenuItem Header ="文件">
                    <MenuItem Name="New" Click ="New_Click"  Header ="新建对话框"></MenuItem>
                </MenuItem>
                <MenuItem Header ="操作"></MenuItem>
            </Menu>
        </DockPanel>
    </Grid>
</Window>

主窗口的CS代码:

  private void New_Click(object sender, RoutedEventArgs e)
        {
            string name = New.Header.ToString();
            
            AboutWindow aboutWindow = new AboutWindow();
            aboutWindow.TxtName = name;
            aboutWindow.ShowDialog();
        }

子窗口的XAML:
<Window x:Class="多窗口.AboutWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        WindowStartupLocation ="CenterScreen" WindowState ="Maximized"
        Title="关于对话框" Height="300" Width="300" Name ="aboutDialog" Loaded="aboutDialog_Loaded" ResizeMode ="NoResize" >
    <Grid>
        <TextBox Name ="textName"  Text ="" Height ="20" Width ="100" Background ="Gold"></TextBox>
    </Grid>
</Window>
子窗口的CS:

 public partial class AboutWindow : Window
    {
        private string txtName;

        public string TxtName
        {
            get { return txtName; }
            set { txtName = value; }
        }
        public AboutWindow()
        {
            InitializeComponent();
        }

        private void aboutDialog_Loaded(object sender, RoutedEventArgs e)
        {
            textName.Text = txtName;
        }
    }

APP类的XMAL:

<Application x:Class="多窗口.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="AboutWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>

11.打开和保存对话框

1.OpenFileDialog 常用属性是 Filter过滤器 FileName文件名

2.SaveFileDialog





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值