0

シャープなウィンドウフォームに動的にボタンを追加したい。ボタンの数は、データテーブルで使用可能なレコードの数と同じである必要があり、ボタンがクリックされたレコードを表示したいと思います。誰かが私を助けることができますか?

4

2 に答える 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 に答える