187 lines
7.5 KiB
C#
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
|
|
}
|
|
} |