現在、WinFormsミュージックプレーヤーを設計しています。ボタンループ内でControls.Add(new button(){})を使用するときのボタンの動作方法を設定する方法
Controls.Add(new Button(){})
私は現在使用しているコードを介して作成されたときにボタンがその内部whileループは、ボタン名を作成するためのコードがされてい+ Xここで、xの終わりにインクリメント値でありますループ。私がしたいのは、クリックするとボタンが "mpPlay"という名前の音楽を再生する機能を実行するように設定することです。これについて最善の方法は何でしょうか?あなたはgitリポジトリhereをダウンロードすることができ、ソースコードを見たい場合は
while (trackNoReader.Read())
{
flpTrackNo.Controls.Add(new Button()
{
Name = "btnTrackNo" + x,
Text = trackNoReader[0] as string,
BackColor = Color.Transparent,
FlatStyle = FlatStyle.Flat,
AutoSize = false,
Dock = DockStyle.Top,
Width = flpArtist.Width,
ForeColor = ColorTranslator.FromHtml("#444444"),
Font = new Font("Trebuchet MS", 9),
Enabled = true,
TextAlign = ContentAlignment.MiddleLeft,
FlatAppearance =
{
BorderSize = 0
},
});
x++;
}
:
はここで私が使用している現在のコードです。
public Button AttachMethodToButton(Button b, Action buttonMethod)
{
b.Click += (s, e) => buttonMethod();
return b;
}
あなたはこのように呼び出します: - 多くのおかげで、ロス [EDIT]ここ
は、あなたがこのような単純なヘルパーメソッドを持つことができ
public void mpPlay(int x, string Column)
{
MySqlCommand selectPath = new MySqlCommand("SELECT" + Column + "FROM Music WHERE TrackNo=" + x);
selectPath.Connection = DB.connect;
MySqlDataReader readerPath = selectPath.ExecuteReader();
while (readerPath.Read())
{
path = readerPath[0] as string;
path = path.Replace("\"", "\\");
}
mpPlayer.Open(path);
mpPlayer.Play();
}
あなたのボタンは、そのパネルにはかなり座っ以外は、行いません。あなたはできるだけそのボタンを強く叩くことができますが、Clickイベントハンドラなしでは何も起こりません。 Buttonから独自のクラスを派生させるのをためらってはいけません。何か便利なことをするためにOnClickをオーバーライドし、何か有用なことをするために必要なプロパティを追加してください。それはこのコードを1つのライナーに崩壊させます。 –