シャープなウィンドウフォームに動的にボタンを追加したい。ボタンの数は、データテーブルで使用可能なレコードの数と同じである必要があり、ボタンがクリックされたレコードを表示したいと思います。誰かが私を助けることができますか?
質問する
3229 次
2 に答える
3
あなたの場合、UI でアイテム レコードを表すユーザー コントロールを作成し、このユーザー コントロールでアイテムとパブリック イベントを asspt するコンストラクターを作成し、このようにコンテナーに追加する必要があります。
myPanel.Controls.Add(new ItemRecordUserControl(item));
おそらく、通常の panelの代わりに特定のコンテナを使用する必要があるでしょう 。System.Windows.Forms.FlowLayoutPanel
ユーザー コントロールは次のようになります。
public partial class ItemRecorUserControl : UserControl
{
public event EventHandler<EventArgs> ActionButtonClicked;
public void OnActionButtonClicked(object sender, EventArgs e)
{
if (this.ActionButtonClicked != null)
this.ActionButtonClicked(sender, e);
}
public ItemRecorUserControl()
{
InitializeComponent();
}
public ItemRecorUserControl(ItemRecord item) : this()
{
// fill item data here to controls
}
private void btnAction_Click(object sender, EventArgs e)
{
this.OnActionButtonClicked(sender, e);
}
}
于 2012-08-13T06:39:04.670 に答える
1
次のようなボタンを追加できます。
for (int i = 0; i < YourDataTableItemsCount; i++)
{
Button b = new Button();
b.Left = //Calculate Left
b.Top = //Calculate Top
b.Parent = this;
//Or
this.Controls.Add(b);
}
于 2012-08-13T06:41:25.100 に答える