using System.IO; namespace DualScreenDemo { public partial class PrimaryForm { private PictureBox pictureBoxPinYinSingers; private Button modifyButtonPinYinSingers; private Button clearButtonPinYinSingers; private Button closeButtonPinYinSingers; private RichTextBox inputBoxPinYinSingers; private void InitializeButtonsForPinYinSingers() { InitializeInputBoxPinYinSingers(); InitializePinYinSingersButton(); InitializeAlphbtBtns(pictureBoxPinYinSingers, LetterButtonPinYinSingers_Click); } private void InitializePinYinSingersButton() { var data = LoadBtnConfigData(); modifyButtonPinYinSingers = new Button { Name = "modifyButtonPinYinSingers" }; ConfigureButton(modifyButtonPinYinSingers, 650, 264, 72, 67, new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesPinYin"]["normal"])), new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesPinYin"]["mouseOver"])), new Bitmap(Path.Combine(serverPath, data["ModifyButtonImagesPinYin"]["mouseDown"])), ModifyButtonPinYinSingers_Click); pictureBoxPinYinSingers.Controls.Add(modifyButtonPinYinSingers); clearButtonPinYinSingers = new Button { Name = "clearButtonPinYinSingers" }; ConfigureButton(clearButtonPinYinSingers, 8, 264, 72, 67, new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesPinYin"]["normal"])), new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesPinYin"]["mouseOver"])), new Bitmap(Path.Combine(serverPath, data["ClearButtonImagesPinYin"]["mouseDown"])), ClearButtonPinYinSingers_Click); pictureBoxPinYinSingers.Controls.Add(clearButtonPinYinSingers); closeButtonPinYinSingers = new Button { Name = "closeButtonPinYinSingers" }; ConfigureButton(closeButtonPinYinSingers, 730, 264, 72, 67, new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesPinYin"]["normal"])), new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesPinYin"]["mouseOver"])), new Bitmap(Path.Combine(serverPath, data["CloseButtonImagesPinYin"]["mouseDown"])), CloseButtonPinYinSingers_Click); pictureBoxPinYinSingers.Controls.Add(closeButtonPinYinSingers); } private void InitializeInputBoxPinYinSingers() { try { string fontName = "Times New Roman"; float fontSize = 26; FontStyle fontStyle = FontStyle.Regular; Color foreColor = Color.Black; inputBoxPinYinSingers = new RichTextBox { Visible = false, Name = "inputBoxPinYinSingers", ForeColor = foreColor, Font = new Font(fontName, fontSize / 900 * Screen.PrimaryScreen.Bounds.Height, fontStyle) }; ResizeAndPositionControl(inputBoxPinYinSingers, 20, 25, 448, 57); pictureBoxPinYinSingers.Controls.Add(inputBoxPinYinSingers); } catch (Exception ex) { Console.WriteLine($"An error occurred: {ex.Message}"); } } private void ShowImageOnPictureBoxPinYinSingers(string imagePath) { Bitmap originalImage = new Bitmap(imagePath); pictureBoxPinYinSingers.Image = originalImage; ResizeAndPositionPictureBox(pictureBoxPinYinSingers, 390, 360, 808, 356); pictureBoxPinYinSingers.Visible = true; } private void SetPinYinSingersAndButtonsVisibility(bool isVisible) { System.Action action = () => { SuspendLayout(); if (isVisible) SetUIVisible(pictureBoxPinYinSingers); else CloseUI(pictureBoxPinYinSingers); }; if (this.InvokeRequired) { this.Invoke(action); } else { action(); } } #region 按鈕點擊事件 private void PinyinSingerSearchButton_Click(object sender, EventArgs e) { UpdateSSearchBtn(pinyinSearchButton, pinyinSearchActiveBackground); var configData = LoadBtnConfigData(); string pinyinImagePath = Path.Combine(serverPath, configData["ImagePaths"]["PinYinSingers"]); ShowImageOnPictureBoxPinYinSingers(Path.Combine(serverPath, pinyinImagePath)); SetZhuYinSingersAndButtonsVisibility(false); // 隱藏注音搜尋相關控件 SetEnglishSingersAndButtonsVisibility(false); // 隱藏英文搜尋相關控件 SetWordCountSingersAndButtonsVisibility(false); // 隱藏字數搜尋相關控件 SetHandWritingForSingersAndButtonsVisibility(false); // 隱藏手寫搜尋相關控件 SetPinYinSingersAndButtonsVisibility(true); //SetPictureBoxArtistSearchAndButtonsVisibility(false); pictureBoxPinYinSingers.Visible = true; } private void LetterButtonPinYinSingers_Click(object sender, EventArgs e) { var button = sender as Button; if (button != null && button.Tag != null) { if (inputBoxPinYinSingers.Visible) { inputBoxPinYinSingers.Text += button.Tag.ToString(); } } } private void ModifyButtonPinYinSingers_Click(object sender, EventArgs e) { if (pictureBoxPinYinSingers.Controls.Contains(inputBoxPinYinSingers) && inputBoxPinYinSingers.Text.Length > 0) { inputBoxPinYinSingers.Text = inputBoxPinYinSingers.Text.Substring(0, inputBoxPinYinSingers.Text.Length - 1); } } private void ClearButtonPinYinSingers_Click(object sender, EventArgs e) { if (pictureBoxPinYinSingers.Controls.Contains(inputBoxPinYinSingers) && inputBoxPinYinSingers.Text.Length > 0) { inputBoxPinYinSingers.Text = ""; } } private void CloseButtonPinYinSingers_Click(object sender, EventArgs e) { pictureBoxPinYinSingers.Visible = false; pinyinSearchButton.BackgroundImage = pinyinSearchNormalBackground; FindPinYinSingers(); SetPinYinSingersAndButtonsVisibility(false); } private void FindPinYinSingers() { string searchText = inputBoxPinYinSingers.Text; // 在這裡添加搜尋歌曲的邏輯 // 例如:根據輸入框的內容搜尋歌曲 string query = string.IsNullOrWhiteSpace(searchText) ? "SELECT * FROM artists; LIMIT 1000" : $"SELECT * FROM artists WHERE `pinyin_abbr` LIKE '{searchText}%';"; //string query = $"SELECT * FROM SongLibrary WHERE `歌星A拼音` LIKE '{searchText}%' OR `歌星B拼音` LIKE '{searchText}%' "; var searchResults = SearchSingers_Mysql(query); // 重置分頁 currentPage = 0; currentArtistList = searchResults; totalPages = (int)Math.Ceiling((double)searchResults.Count / itemsPerPage); multiPagePanel.currentPageIndex = 0; multiPagePanel.LoadSingers(currentArtistList); } #endregion } }