superstar_v2/PrimaryFormParts/SingerSearch/PrimaryForm.SingerSearch.PinyinSearch.cs
jasonchenwork 9b6772686c 2508291614
控制項從屬設定更正
程式碼重構/瘦身
調整減少videoview閃爍
已點歌曲頁面自動定位邏輯調整
2025-08-29 16:15:54 +08:00

187 lines
7.5 KiB
C#

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
}
}