void AddGridButton(GridActionButton btn)
        {
            int idx = gridAction.Rows.Add();

            gridAction.Rows[idx].Cells[0].Value = btn.Name;
            gridAction.Rows[idx].Cells[1].Value = btn.Text;
            gridAction.Rows[idx].Cells[2].Value = btn.Icon;
            gridAction.Rows[idx].Cells[3].Value = btn.OnClick;
        }
        GridActionButton CreateActionButton(string name, string text, string icon, string actionHandler)
        {
            GridActionButton btn = new GridActionButton();

            btn.Name    = name;
            btn.Text    = text;
            btn.Icon    = icon;
            btn.OnClick = actionHandler;
            return(btn);
        }
        private void btnAddActionButton_Click(object sender, EventArgs e)
        {
            int r = gridAction.Rows.Count;
            GridActionButton col = new GridActionButton();

            col.Name    = "btnAction" + r;
            col.Text    = "Action " + r;
            col.OnClick = "btnAction" + r + "OnClick";

            AddGridButton(col);
        }
        List <GridActionButton> GetGridActions()
        {
            List <GridActionButton> btns = new List <GridActionButton>();

            foreach (DataGridViewRow row in gridAction.Rows)
            {
                if (row.Cells[0].Value != null && row.Cells[1].Value != null)
                {
                    string           name    = GetCellValue(row, 0);
                    string           text    = GetCellValue(row, 1);
                    string           icon    = GetCellValue(row, 2);
                    string           handler = GetCellValue(row, 3);
                    GridActionButton btn     = CreateActionButton(name, text, icon, handler);
                    btns.Add(btn);
                }
            }
            return(btns);
        }