使用 C# 开发智能手机软件:推箱子(二十)
生活随笔
收集整理的這篇文章主要介紹了
使用 C# 开发智能手机软件:推箱子(二十)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這是“使用 C# 開發(fā)智能手機(jī)軟件:推箱子” 系列文章的第二十篇。在這篇文章中,介紹 Window/DesignDlg.cs 源程序文件。這個源程序文件包含 DesignDlg 類,該類繼承自 System.Windows.Forms.Form 類,表示推箱子的“設(shè)計(jì)”對話框。如下圖所示:
我們先看看 DesignDlg.Designer.cs 的部分源程序代碼吧:
?1?namespace?Skyiv.Ben.PushBox.Window?2?{
?3???partial?class?DesignDlg
?4???{
?5?????private?void?InitializeComponent()
?6?????{
?7?????????//?注意:省略了一些代碼
?8?????????
?9???????this.rbnCreate.CheckedChanged?+=?new?System.EventHandler(this.Action_CheckedChanged);
10???????this.rbnEdit.CheckedChanged?+=?new?System.EventHandler(this.Action_CheckedChanged);
11???????this.rbnDelete.CheckedChanged?+=?new?System.EventHandler(this.Action_CheckedChanged);
12???????this.tbxDeleteLevel.TextChanged?+=?new?System.EventHandler(this.tbxDeleteLevel_TextChanged);
13?????}
14?
15?????private?System.Windows.Forms.NumericUpDown?nudWidth;
16?????private?System.Windows.Forms.NumericUpDown?nudHeight;
17?????private?System.Windows.Forms.RadioButton?rbnCreate;
18?????private?System.Windows.Forms.RadioButton?rbnEdit;
19?????private?System.Windows.Forms.RadioButton?rbnDelete;
20?????private?System.Windows.Forms.Button?btnOk;
21?????private?System.Windows.Forms.Button?btnCancel;
22?????private?System.Windows.Forms.CheckBox?chkCopy;
23?????private?System.Windows.Forms.TextBox?tbxDeleteLevel;
24?????private?System.Windows.Forms.TextBox?tbxLevel;
25???}
26?}
下面來看看 DesignDlg.cs 的源程序代碼吧:
?1?using?System;?2?using?System.Drawing;
?3?using?System.Windows.Forms;
?4?using?Skyiv.Ben.PushBox.Common;
?5?
?6?namespace?Skyiv.Ben.PushBox.Window
?7?{
?8???///?<summary>
?9???///?“設(shè)計(jì)”對話框
10???///?</summary>
11???public?partial?class?DesignDlg?:?Form
12???{
13?????Action?active;
14?????int?level;
15?????int?maxLevel;
16?????Size?levelSize;
17?
18?????public?Action?Active?{?get?{?return?active;?}?}
19?????public?bool?IsCopy?{?get?{?return?chkCopy.Checked;?}?}
20?????public?int?Level?{?set?{?level?=?value;?}?}
21?????public?int?MaxLelvel?{?set?{?maxLevel?=?value;?}?}
22?
23?????public?DesignDlg(bool?isTopMost)
24?????{
25???????InitializeComponent();
26???????TopMost?=?isTopMost;
27?????}
28?
29?????protected?override?void?OnLoad(EventArgs?e)
30?????{
31???????base.OnLoad(e);
32???????tbxLevel.Text?=?(level?+?1).ToString()?+?"/"?+?maxLevel.ToString();
33???????rbnDelete.Enabled?=?(level?==?maxLevel?-?1?&&?maxLevel?>?1);
34???????Action_CheckedChanged(rbnCreate,?null);
35?????}
36?
37?????public?Size?LevelSize
38?????{
39???????get
40???????{
41?????????return?(active?==?Action.Create)???new?Size((int)nudWidth.Value,?(int)nudHeight.Value)?:?levelSize;
42???????}
43???????set
44???????{
45?????????levelSize?=?value;
46?????????if?(value.Width?>?nudWidth.Maximum)?nudWidth.Maximum?=?value.Width;
47?????????if?(value.Height?>?nudHeight.Maximum)?nudHeight.Maximum?=?value.Height;
48?????????nudWidth.Value?=?value.Width;
49?????????nudHeight.Value?=?value.Height;
50???????}
51?????}
52?
53?????public?int?MaxLevelSize
54?????{
55???????set
56???????{
57?????????nudWidth.Maximum?=?(nudWidth.Value?>?value)???nudWidth.Value?:?value;
58?????????nudHeight.Maximum?=?(nudHeight.Value?>?value)???nudHeight.Value?:?value;
59???????}
60?????}
61?
62?????private?void?Action_CheckedChanged(object?sender,?EventArgs?e)
63?????{
64???????RadioButton?s?=?(RadioButton)sender;
65???????if?(s?==?rbnCreate?&&?s.Checked)
66???????{
67?????????active?=?Action.Create;
68?????????chkCopy.Enabled?=?nudWidth.Enabled?=?nudHeight.Enabled?=?true;
69?????????tbxDeleteLevel.ReadOnly?=?true;
70?????????btnOk.Enabled?=?true;
71???????}
72???????if?(s?==?rbnEdit?&&?s.Checked)
73???????{
74?????????active?=?Action.Edit;
75?????????chkCopy.Enabled?=?nudWidth.Enabled?=?nudHeight.Enabled?=?false;
76?????????tbxDeleteLevel.ReadOnly?=?true;
77?????????btnOk.Enabled?=?true;
78???????}
79???????else?if?(s?==?rbnDelete?&&?s.Checked)
80???????{
81?????????active?=?Action.Delete;
82?????????chkCopy.Enabled?=?nudWidth.Enabled?=?nudHeight.Enabled?=?false;
83?????????tbxDeleteLevel.ReadOnly?=?false;
84?????????tbxDeleteLevel.Text?=?string.Empty;
85?????????btnOk.Enabled?=?(level?+?1).ToString()?==?tbxDeleteLevel.Text;
86???????}
87?????}
88?
89?????private?void?tbxDeleteLevel_TextChanged(object?sender,?EventArgs?e)
90?????{
91???????btnOk.Enabled?=?(level?+?1).ToString()?==?tbxDeleteLevel.Text;
92?????}
93???}
94?}
幾點(diǎn)說明:
- “設(shè)計(jì)”對話框用來選擇“新建”、“編輯”、“刪除”推箱子游戲的關(guān)卡。
- 如果當(dāng)前關(guān)不是最后一關(guān),“刪除”單選按鈕將不可選(變灰),這是由該類的 OnLoad 方法中的以下語句實(shí)現(xiàn)的:
rbnDelete.Enabled = (level == maxLevel - 1 && maxLevel > 1); - 如果選擇“刪除”的話,必須輸入要刪除的關(guān)數(shù)用以確認(rèn),否則“確定”按鈕將無法點(diǎn)擊(變灰),這是由該類的 tbxDeleteLevel_TextChanged 方法實(shí)現(xiàn)的,該方法只有一條語句:
btnOk.Enabled = (level + 1).ToString() == tbxDeleteLevel.Text; - 如果不是選擇“新建”的話,將無法輸入“寬度”和“高度”,這是由該類的 Action_CheckedChanged 實(shí)現(xiàn)的。
- 這個類只是一個用戶界面,負(fù)責(zé)按受用戶所選擇的“設(shè)計(jì)”動作和相應(yīng)的參數(shù),實(shí)際進(jìn)行設(shè)計(jì)工作的代碼將在下篇文章中介紹。
上一篇:使用 C# 開發(fā)智能手機(jī)軟件:推箱子(十九)
下一篇:使用 C# 開發(fā)智能手機(jī)軟件:推箱子(二十一)
返回目錄
總結(jié)
以上是生活随笔為你收集整理的使用 C# 开发智能手机软件:推箱子(二十)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复习
- 下一篇: sqlserver2000分页存储过程(