2017-01-25 4 views
0

Так что я хотел бы сделать это, чтобы создать кнопку для каждого сотрудника в таблице. Например, скажем, у меня есть четыре сотрудника в моих таблицах, поэтому должна быть четыре кнопки, говорящая «платить», я включил скриншот желаемого результата. Я просто не мог придумать какую-либо идею сделать это ... может кто-нибудь помочь, пожалуйста, или любые предложения. Спасибо заранее. Я использую C# и визуальную студию enter image description hereКак сгенерировать кнопку для каждого элемента таблицы?

+0

Возможный дубликат [Как добавить кнопки динамически в мою форму?] (Http://stackoverflow.com/questions/8608311/how-to-add-buttons-dynamically-to-my-form) –

+0

Сделайте это внутри цикл, который показывает сотрудников, кстати, что вы сделали до сих пор? –

+0

DataGridViewButtonColumn https://msdn.microsoft.com/en-us/library/bxt3k60s.aspx – Serg

ответ

0

Вы можете сделать что-то вроде псевдокода;

foreach(Employee emp in Employees) 
{ 
    this.Controls.Add(//add label here with unique id) 
    this.Controls.Add(//add button here with unique id) 
} 

* Давайте предположим, что Служащие коллекция типа Employee * Вы, возможно, придется установить местоположение метки и кнопки, чтобы они отображались красиво на форме.

1

Предполагая, что вы используете WinForms (?), Рассмотрели ли вы использование элемента управления DataGridView? Существует тип столбца DataGridViewButtonColumn, который будет соответствовать вашим целям. Создайте форму, отбросьте на нее элемент управления DataGridView и попробуйте этот демонстрационный код:

using System; 
using System.Data; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     private System.Windows.Forms.DataGridViewButtonColumn ButtonColumn; 
     private System.Windows.Forms.DataGridViewTextBoxColumn EmployeeColumn; 

     public Form1() 
     { 
      //Add a DataGridView control to your form, call it "dataGridView1" 
      InitializeComponent(); 

      EmployeeColumn = new System.Windows.Forms.DataGridViewTextBoxColumn() 
      { 
       Name = "Employee" 
      }; 

      ButtonColumn = new System.Windows.Forms.DataGridViewButtonColumn() 
      { 
       Text = "Pay" 
      }; 

      dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { EmployeeColumn, ButtonColumn }); 

      //Populate this as required 
      var oDataTable = new DataTable(); 
      oDataTable.Columns.Add("Employee", typeof(String)); 

      dataGridView1.Rows.Add("Tom", ButtonColumn.Text); 
      dataGridView1.Rows.Add("Dick", ButtonColumn.Text); 
      dataGridView1.Rows.Add("Harry", ButtonColumn.Text); 
     } 
    } 
} 
0

Вы можете сделать это легко. Попробуйте что-то вроде этого:

 private void Form1_Load(object sender, EventArgs e) 
     { 
      var employees = new string[] { "Emp1", "Emp2", "Emp3", "Emp4" }; 
      int btnTop = 0, btnLeft = 100, lblTop = 0, lblLeft = 20; 

      foreach (var employee in employees) 
      { 
       btnTop += 30; lblTop += 30; 
       this.Controls.Add(new Label { Text = employee, Left = lblLeft, Top = lblTop, Width = 50 }); 
       this.Controls.Add(new Button { Text = "Pay", Left = btnLeft, Top = btnTop, Width = 50 }); 
      } 
     } 

Пройдите через таблицу сотрудников и добавьте любой элемент управления, который вы хотите.