diff --git a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs
index a31d9ba..5a0d7f5 100644
--- a/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs
+++ b/PrimaryFormParts/SongSearch/PrimaryForm.SongSearch.PinyinSearch.cs
@@ -45,7 +45,9 @@ namespace DualScreenDemo
SetPinYinSongsAndButtonsVisibility(true);
pictureBoxPinYinSongs.Visible = true;
}
- // 初始化拼音按鈕
+ ///
+ /// 初始化拼音按鈕
+ ///
private void InitializeLetterButtonsForPinYinSongs()
{
// 從設定檔 (config.ini) 讀取配置數據
@@ -83,7 +85,11 @@ namespace DualScreenDemo
this.Controls.Add(letterButtonsForPinYinSongs[i]);
}
}
- // 處理拼音按鈕點擊事件
+ ///
+ /// 處理拼音按鈕點擊事件
+ ///
+ /// 觸發事件按鈕
+ /// 事件參數
private void LetterButtonPinYinSongs_Click(object sender, EventArgs e)
{
// 嘗試將觸發事件的物件轉換為 Button 類型
@@ -101,43 +107,55 @@ namespace DualScreenDemo
}
}
+ ///
+ /// 初始化拼音輸入相關的 UI 控件,包括字母按鈕、特殊功能按鈕(修改、清除、關閉),以及拼音輸入框。
+ ///
private void InitializeButtonsForPinYinSongs()
{
// 初始化拼音字母按鈕,根據 QWERTY 鍵盤佈局建立對應的按鈕
InitializeLetterButtonsForPinYinSongs();
- // 初始化特殊功能按鈕,包括修改、清除和關閉按鈕
+ // 初始化特殊功能按鈕(修改、清除、關閉)
InitializeSpecialButtonsForPinYinSongs();
- // 初始化拼音輸入框,讓使用者可以輸入拼音來搜尋歌曲
+ // 初始化拼音輸入框,使用者可透過輸入拼音來搜尋歌曲
InitializeInputBoxPinYinSongs();
}
+ ///
+ /// 初始化拼音輸入的特殊功能按鈕,包括:
+ /// 1. 修改按鈕 - 刪除輸入框中的最後一個字母
+ /// 2. 清除按鈕 - 清空輸入框的內容
+ /// 3. 關閉按鈕 - 隱藏拼音輸入的 UI 元件
+ ///
private void InitializeSpecialButtonsForPinYinSongs()
{
-
- // 初始化「修改」按鈕,讓使用者可以刪除輸入框中的最後一個字母
+ // 初始化「修改」按鈕(刪除輸入框最後一個字母)
InitializeModifyButtonPinYinSongs();
- // 初始化「清除」按鈕,讓使用者可以清空輸入框的內容
+ // 初始化「清除」按鈕(清空輸入框內容)
InitializeClearButtonPinYinSongs();
- // 初始化「關閉」按鈕,讓使用者可以關閉拼音輸入的 UI 元件
+ // 初始化「關閉」按鈕(關閉拼音輸入 UI)
InitializeCloseButtonPinYinSongs();
}
+
+ ///
+ /// 初始化「修改」按鈕,提供刪除拼音輸入框最後一個字母的功能。
+ ///
private void InitializeModifyButtonPinYinSongs()
{
- // 載入設定檔資料,取得特殊按鈕的相關配置
+ // 讀取設定檔,載入特殊按鈕的配置資料
var data = LoadConfigData();
- // 從設定檔讀取「修改按鈕」的座標位置與大小
+ // 從設定檔取得「修改按鈕」的座標與大小
modifyButtonPinYinCoords = LoadSpecialButtonCoordinates(data, "SpecialButtonCoordinates", "modifyButtonPinYinSongs");
- // 從設定檔讀取「修改按鈕」的不同狀態圖片 (一般、滑鼠懸停、按下)
+ // 讀取「修改按鈕」的圖片資源(一般狀態、滑鼠懸停、按下)
var buttonImages = LoadButtonImages(data, "ModifyButtonImagesPinYin");
- // 創建「修改按鈕」,並綁定點擊事件
+ // 創建「修改」按鈕,並綁定點擊事件
modifyButtonPinYinSongs = CreateSpecialButton(
"btnModifyPinYinSongs", // 按鈕名稱
modifyButtonPinYinCoords, // 設定按鈕的座標與大小
@@ -146,43 +164,51 @@ namespace DualScreenDemo
buttonImages.mouseDown, // 設定按鈕的按下狀態圖片
ModifyButtonPinYinSongs_Click // 綁定按鈕的點擊事件處理函式
);
-
}
+ ///
+ /// 「修改」按鈕點擊事件:刪除拼音輸入框 (`inputBoxPinYinSongs`) 中的最後一個字母。
+ ///
private void ModifyButtonPinYinSongs_Click(object sender, EventArgs e)
{
-
- // 檢查 `inputBoxPinYinSongs` 是否已被加入到 `Controls` 集合中 (確保輸入框存在)
+ // 確保 `inputBoxPinYinSongs` 存在於視窗控制項集合內,且輸入框內有文字
if (this.Controls.Contains(inputBoxPinYinSongs) && inputBoxPinYinSongs.Text.Length > 0)
{
- // 若 `inputBoxPinYinSongs` 有內容,刪除最後一個字母
+ // 刪除輸入框內的最後一個字母
inputBoxPinYinSongs.Text = inputBoxPinYinSongs.Text.Substring(0, inputBoxPinYinSongs.Text.Length - 1);
}
}
+
+ ///
+ /// 初始化「清除」按鈕 (`clearButtonPinYinSongs`),用於清空拼音輸入框 (`inputBoxPinYinSongs`)。
+ ///
private void InitializeClearButtonPinYinSongs()
{
// 從設定檔載入資料
var data = LoadConfigData();
- // 讀取清除按鈕的座標配置 (X, Y, Width, Height)
+ // 讀取「清除」按鈕的座標配置 (X, Y, Width, Height)
clearButtonPinYinCoords = LoadSpecialButtonCoordinates(data, "SpecialButtonCoordinates", "clearButtonPinYinSongs");
- // 載入清除按鈕的圖片 (一般狀態、滑鼠懸停、按下時的圖片)
+ // 載入「清除」按鈕的圖片 (一般狀態、滑鼠懸停、按下時的圖片)
var buttonImages = LoadButtonImages(data, "ClearButtonImagesPinYin");
- // 建立「清除按鈕」並指定對應的座標與圖片
+ // 建立「清除」按鈕,設定對應的座標與圖片,並綁定點擊事件
clearButtonPinYinSongs = CreateSpecialButton(
"btnClearPinYinSongs", // 按鈕名稱
- clearButtonPinYinCoords, // 按鈕的座標與大小
- buttonImages.normal, // 按鈕的普通狀態圖片
- buttonImages.mouseOver, // 滑鼠懸停時的圖片
- buttonImages.mouseDown, // 滑鼠按下時的圖片
- ClearButtonPinYinSongs_Click // 點擊事件處理函式
+ clearButtonPinYinCoords, // 設定按鈕的座標與大小
+ buttonImages.normal, // 設定按鈕的正常狀態圖片
+ buttonImages.mouseOver, // 設定按鈕的滑鼠懸停圖片
+ buttonImages.mouseDown, // 設定按鈕的按下狀態圖片
+ ClearButtonPinYinSongs_Click // 綁定按鈕的點擊事件處理函式
);
-
}
+ ///
+ /// 清空拼音輸入框的內容。
+ /// 當使用者點擊清除按鈕時,若輸入框存在且有內容,則將其清空。
+ ///
private void ClearButtonPinYinSongs_Click(object sender, EventArgs e)
{
// 檢查視窗內是否包含 inputBoxPinYinSongs 控制項,且輸入框內是否有文字
@@ -193,29 +219,36 @@ namespace DualScreenDemo
}
}
+ ///
+ /// 初始化「關閉」按鈕 (`closeButtonPinYinSongs`),用於隱藏拼音輸入介面。
+ ///
private void InitializeCloseButtonPinYinSongs()
{
// 讀取設定檔中的按鈕配置數據
var data = LoadConfigData();
- // 從設定檔中取得「關閉」按鈕的座標
+ // 從設定檔中取得「關閉」按鈕的座標 (X, Y, Width, Height)
closeButtonPinYinCoords = LoadSpecialButtonCoordinates(data, "SpecialButtonCoordinates", "closeButtonPinYinSongs");
- // 從設定檔中讀取「關閉」按鈕的圖片
+ // 從設定檔中讀取「關閉」按鈕的圖片 (一般狀態、滑鼠懸停、按下時的圖片)
var buttonImages = LoadButtonImages(data, "CloseButtonImagesPinYin");
- // 建立「關閉」按鈕,並設定名稱、座標、按鈕圖片及點擊事件
+ // 建立「關閉」按鈕,設定名稱、座標、圖片及點擊事件
closeButtonPinYinSongs = CreateSpecialButton(
- "btnClosePinYinSongs", // 按鈕名稱
- closeButtonPinYinCoords, // 按鈕座標 (X, Y, Width, Height)
- buttonImages.normal, // 按鈕的普通狀態圖片
- buttonImages.mouseOver, // 滑鼠懸停時的圖片
- buttonImages.mouseDown, // 按下時的圖片
- CloseButtonPinYinSongs_Click // 點擊事件處理函式
+ "btnClosePinYinSongs", // 按鈕名稱
+ closeButtonPinYinCoords, // 設定按鈕的座標與大小
+ buttonImages.normal, // 設定按鈕的正常狀態圖片
+ buttonImages.mouseOver, // 設定按鈕的滑鼠懸停圖片
+ buttonImages.mouseDown, // 設定按鈕的按下狀態圖片
+ CloseButtonPinYinSongs_Click // 綁定按鈕的點擊事件處理函式
);
-
}
+ ///
+ /// 關閉拼音輸入模式,隱藏相關 UI 元件。
+ ///
+ /// 觸發事件的按鈕。
+ /// 事件參數。
private void CloseButtonPinYinSongs_Click(object sender, EventArgs e)
{
// 隱藏拼音輸入的背景圖片 (可能是 UI 中的輸入框背景)
@@ -224,7 +257,9 @@ namespace DualScreenDemo
SetPinYinSongsAndButtonsVisibility(false);
}
-
+ ///
+ /// 初始化拼音輸入框 (`RichTextBox`),並從 `config.ini` 讀取相關設定。
+ ///
private void InitializeInputBoxPinYinSongs()
{
try
@@ -245,13 +280,13 @@ namespace DualScreenDemo
data = parser.ReadData(reader);
}
- // 從 INI 檔案讀取拼音輸入框的位置與大小
+ // **從 INI 檔案讀取拼音輸入框的位置與大小**
int x = int.Parse(data["InputBoxPinYinSongs"]["X"]); // X 座標
int y = int.Parse(data["InputBoxPinYinSongs"]["Y"]); // Y 座標
int width = int.Parse(data["InputBoxPinYinSongs"]["Width"]); // 寬度
int height = int.Parse(data["InputBoxPinYinSongs"]["Height"]); // 高度
- // 讀取字型設定
+ // **讀取字型設定**
string fontName = data["InputBoxPinYinSongs"]["FontName"]; // 字型名稱
float fontSize = float.Parse(data["InputBoxPinYinSongs"]["FontSize"]); // 字體大小
FontStyle fontStyle = (FontStyle)Enum.Parse(typeof(FontStyle), data["InputBoxPinYinSongs"]["FontStyle"]); // 字體樣式
@@ -273,7 +308,7 @@ namespace DualScreenDemo
// 設定輸入框的位置與大小
ResizeAndPositionControl(inputBoxPinYinSongs, x, y, width, height);
- // 綁定 `TextChanged` 事件 (當輸入內容改變時觸發搜尋)
+ // **綁定 `TextChanged` 事件 (當輸入內容改變時觸發搜尋)**
inputBoxPinYinSongs.TextChanged += (sender, e) =>
{
string searchText = inputBoxPinYinSongs.Text;
@@ -298,11 +333,22 @@ namespace DualScreenDemo
// 發生錯誤時輸出錯誤訊息 (避免程式崩潰)
Console.WriteLine($"An error occurred: {ex.Message}");
}
-
}
- // 讀取 PictureBoxPinYinSongs 的座標設定
+ ///
+ /// 存儲 `PictureBoxPinYinSongs` 的座標與尺寸信息。
+ ///
+ ///
+ /// 此元組包含以下四個值:
+ /// X:X 座標
+ /// , Y:Y 座標
+ /// , Width:寬度
+ /// , Height:高度
+ ///
private (int X, int Y, int Width, int Height) pictureBoxPinYinSongCoords;
+ ///
+ /// 從 `config.ini` 配置檔案中載入 `PictureBoxPinYinSongs` 的座標與尺寸設定。
+ ///
private void LoadPictureBoxPinYinSongCoordsFromConfig()
{
// 創建一個 INI 檔案解析器
@@ -322,7 +368,10 @@ namespace DualScreenDemo
int.Parse(coords["Height"]) // 解析 高度
);
}
- // 顯示拼音歌曲圖片
+ ///
+ /// 顯示拼音歌曲圖片
+ ///
+ /// 圖片路徑
private void ShowImageOnPictureBoxPinYinSongs(string imagePath)
{
// 從設定檔載入 PictureBox 的座標與大小
@@ -355,7 +404,10 @@ namespace DualScreenDemo
pictureBoxPinYinSongs.Visible = true;
}
- // 設定拼音模式的 UI 是否可見
+ ///
+ /// 設定拼音模式的 UI 是否可見
+ ///
+ /// 是否可見
private void SetPinYinSongsAndButtonsVisibility(bool isVisible)
{
// 定義一個委派 (Action),用於更新 UI 控件的可見性