WPF佈局的應用

来源:https://www.cnblogs.com/laizhenghong2012/archive/2018/04/19/8882203.html
-Advertisement-
Play Games

一 寫在開頭1.1 本文內容本文主要內容是使用WPF來實現幾個簡單的界面。 二 登錄視窗小例子2.1 實現代碼XAML代碼: 邏輯代碼: 上面的邏輯代碼中有個需要註意的地方。在WPF中TextBox和PasswordBox這兩個輸入框在用戶沒有輸入的時候返回值為空字元串(即"")而不是null! 2 ...


一 寫在開頭
1.1 本文內容
本文主要內容是使用WPF來實現幾個簡單的界面。

二 登錄視窗小例子
2.1 實現代碼
XAML代碼:

 1 <Window x:Class="LoginDialog.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="Login" Height="200" Width="400">
 5     <Grid>
 6         <Grid>
 7             <Grid.RowDefinitions>
 8                 <RowDefinition></RowDefinition>
 9                 <RowDefinition></RowDefinition>
10                 <RowDefinition></RowDefinition>
11             </Grid.RowDefinitions>
12             <Grid.ColumnDefinitions>
13                 <ColumnDefinition></ColumnDefinition>
14                 <ColumnDefinition></ColumnDefinition>
15             </Grid.ColumnDefinitions>
16             <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5" Grid.Row="0" Grid.Column="0" Text="用戶名:" FontSize="18px"></TextBlock>
17             <TextBox Name="tbUserName" Margin="5" Grid.Row="0" Grid.Column="1"></TextBox>
18             <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5" Grid.Row="1" Grid.Column="0" Text="密碼:" FontSize="18px"></TextBlock>
19             <PasswordBox Name="pbPassword" Margin="5" Grid.Row="1" Grid.Column="1"></PasswordBox>
20             <Button Name="btnLogin" Margin="10" Grid.Row="2" Grid.Column="0" Content="登錄" FontSize="18px" Click="btnLogin_Click"></Button>
21             <Button Name="btnCancel" Margin="10" Grid.Row="2" Grid.Column="1" Content="取消" FontSize="18px"></Button>
22         </Grid>
23     </Grid>
24 </Window>

 

 

邏輯代碼:

 1 private void btnLogin_Click(object sender, RoutedEventArgs e)
 2 {
 3     string username = tbUserName.Text;
 4     string password = pbPassword.Password;
 5 
 6     if ((username == "") || (password == ""))
 7     {
 8         MessageBox.Show("用戶名或密碼不能為空!");
 9     }
10     else
11     {
12         if ((username == "admin") && (password == "123"))
13         {
14             MessageBox.Show("登錄成功!");
15         }
16         else
17         {
18             MessageBox.Show("用戶名或密碼錯誤!");
19         }
20     }
21 }

上面的邏輯代碼中有個需要註意的地方。在WPF中TextBox和PasswordBox這兩個輸入框在用戶沒有輸入的時候返回值為空字元串(即"")而不是null!

2.2 效果圖

 

三 連連看游戲界面的實現
3.1 實現代碼
XAML代碼:

1 <Window x:Class="連連看.MainWindow"
2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4         Title="MainWindow" Height="600" Width="600" Loaded="Window_Loaded">
5     <Grid>
6         <Grid Name="gridGame"></Grid>
7     </Grid>
8 </Window>

為什麼XAML里只有一個名為gridGame的Grid佈局?因為界面中的元素在下麵的邏輯代碼中動態地創建了。

邏輯代碼:

 1 private void Window_Loaded(object sender, RoutedEventArgs e)
 2 {
 3     // 修改視窗標題
 4     this.Title = "連連看";
 5 
 6     // 動態設定gridGame為10行10列
 7     for (int i = 0; i < 10; i++)
 8     {
 9         RowDefinition rd = new RowDefinition();
10         gridGame.RowDefinitions.Add(rd);
11 
12         ColumnDefinition cd = new ColumnDefinition();
13         gridGame.ColumnDefinitions.Add(cd);
14     }
15 
16     // 隨機數產生器
17     Random random = new Random();
18 
19     // 隨機產生圖片名稱並填入10行10列的格子中
20     for (int i = 0; i < 10; i++)
21     {
22         for (int j = 0; j < 10; j++)
23         {
24             Image img = new Image();
25             int imgNum = random.Next(1, 10);
26             img.Source = new BitmapImage(new Uri("img/" + imgNum + ".png", UriKind.Relative));
27             Grid.SetRow(img, i);
28             Grid.SetColumn(img, j);
29             gridGame.Children.Add(img);
30         }
31     }
32 }

 

3.2 效果圖

 

四 Windows計算器界面的實現
4.1 實現代碼
XAML代碼:

 1 <Window x:Class="計算器.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         Title="計算器" Height="332" Width="228">
 5     <Grid>
 6         <DockPanel>
 7             <Menu DockPanel.Dock="Top">
 8                 <MenuItem Header="查看"></MenuItem>
 9                 <MenuItem Header="編輯"></MenuItem>
10                 <MenuItem Header="幫助"></MenuItem>
11             </Menu>
12             <Grid>
13                 <Grid.RowDefinitions>
14                     <RowDefinition></RowDefinition>
15                     <RowDefinition></RowDefinition>
16                     <RowDefinition></RowDefinition>
17                     <RowDefinition></RowDefinition>
18                     <RowDefinition></RowDefinition>
19                     <RowDefinition></RowDefinition>
20                     <RowDefinition></RowDefinition>
21                 </Grid.RowDefinitions>
22                 <Grid.ColumnDefinitions>
23                     <ColumnDefinition></ColumnDefinition>
24                     <ColumnDefinition></ColumnDefinition>
25                     <ColumnDefinition></ColumnDefinition>
26                     <ColumnDefinition></ColumnDefinition>
27                     <ColumnDefinition></ColumnDefinition>
28                 </Grid.ColumnDefinitions>
29                 <TextBlock Grid.Row="0" Grid.Column="0" FontSize="18px" TextAlignment="Right" Text="0" Grid.ColumnSpan="5"></TextBlock>
30                 <Button Grid.Row="1" Grid.Column="0" Content="MC"></Button>
31                 <Button Grid.Row="1" Grid.Column="1" Content="MR"></Button>
32                 <Button Grid.Row="1" Grid.Column="2" Content="MS"></Button>
33                 <Button Grid.Row="1" Grid.Column="3" Content="M+"></Button>
34                 <Button Grid.Row="1" Grid.Column="4" Content="M-"></Button>
35                 <Button Grid.Row="2" Grid.Column="0" Content="&lt;--"></Button>
36                 <Button Grid.Row="2" Grid.Column="1" Content="CE"></Button>
37                 <Button Grid.Row="2" Grid.Column="2" Content="C"></Button>
38                 <Button Grid.Row="2" Grid.Column="3" Content="±"></Button>
39                 <Button Grid.Row="2" Grid.Column="4" Content="√"></Button>
40                 <Button Grid.Row="3" Grid.Column="0" Content="7"></Button>
41                 <Button Grid.Row="3" Grid.Column="1" Content="8"></Button>
42                 <Button Grid.Row="3" Grid.Column="2" Content="9"></Button>
43                 <Button Grid.Row="3" Grid.Column="3" Content="/"></Button>
44                 <Button Grid.Row="3" Grid.Column="4" Content="%"></Button>
45                 <Button Grid.Row="4" Grid.Column="0" Content="4"></Button>
46                 <Button Grid.Row="4" Grid.Column="1" Content="5"></Button>
47                 <Button Grid.Row="4" Grid.Column="2" Content="6"></Button>
48                 <Button Grid.Row="4" Grid.Column="3" Content="*"></Button>
49                 <Button Grid.Row="4" Grid.Column="4" Content="1/x"></Button>
50                 <Button Grid.Row="5" Grid.Column="0" Content="1"></Button>
51                 <Button Grid.Row="5" Grid.Column="1" Content="2"></Button>
52                 <Button Grid.Row="5" Grid.Column="2" Content="3"></Button>
53                 <Button Grid.Row="5" Grid.Column="3" Content="-"></Button>
54                 <Button Grid.Row="5" Grid.RowSpan="2" Grid.Column="4" Content="="></Button>
55                 <Button Grid.Row="6" Grid.Column="0" Grid.ColumnSpan="2" Content="0"></Button>
56                 <Button Grid.Row="6" Grid.Column="2" Content="."></Button>
57                 <Button Grid.Row="6" Grid.Column="3" Content="+"></Button>
58             </Grid>
59         </DockPanel>
60     </Grid>
61 </Window>

 

4.2 效果圖


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文來告訴大家如何在 Direct2D1 繪製基本圖形,包括線段、矩形、橢圓 ...
  • 本文告訴大家如何使用dot net core 和其他進程進行通信 ...
  • OpenCVOpenCV是一個開源的跨平臺的電腦視覺庫,它的設計目標時執行速度儘量快,主要關註實時應用。可以運行在Linux、Windows、Mac OS、Android、IOS、Maemo、FreeBSD、OpenBSD等操作系統上。OpenCV採用C/C++語言開發和使用外還支持使用C#、Ru... ...
  • 現在.NET Core貌似很火,與其他.NET開發者交流不說上幾句.NET Core都感覺自己落伍了一樣。但是冷靜背後我們要也看到.NET Core目前還有太多不足,別的不多說,與自家的服務框架WCF集成起來就不咋地,從最初不支持,到現在有個笨笨咔咔的Web Service Reference Pr ...
  • 1 /// <summary> 2 /// XML幫助類 3 /// </summary> 4 public class XmlHelper 5 { 6 /// <summary> 7 /// xml轉實體 8 /// </summary> 9 /// <typeparam name="T"></t ...
  • 先簡單瞭解一這個幾個 名詞的意思。 控制反轉(IOC) 依賴註入(DI) 並不是某種技術。 而是一種思想。一種面向對象編程法則 什麼是控制反轉(IOC)? 什麼是依賴註入(DI) 可以點擊下麵鏈接 理解的比較詳細 https://blog.csdn.net/PacosonSWJTU/article/ ...
  • 1. 直接對view頁面的Layout值設置null 2. 對 文件進行設置, MVC呈現視圖的時候,預設情況下會自動查找_ViewStart.cshtml文件, 直接註釋掉, 或者設置為null 即可. 不過此方法有可能會把全站的模版頁都為空, 故不建議使用. ...
  • 使用項目符號和編號,可以讓文檔的層次結構更清晰、更有條理,也更容易突出重點。在編輯文檔的過程中,我個人也比較偏愛項目標號來標註文章重點信息。在之前的文章中,介紹瞭如何在Word中來創建項目標號和編號列表,在本篇文章中,將介紹創建PDF項目符號列表和多級編號列表的方法。 藉助工具: Spire.PDF ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...