Member 12361495 Ответов: 1

Поля с помощью кнопки в datagridview


У меня есть ограниченное практическое руководство. Как добавить кнопку в одно поле с данными? Я приложу скриншот того, как я его вижу https://ibb.co/gjQi8H У вас есть какие-нибудь рекомендации по этому поводу?

Что я уже пробовал:

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

class TextAndButtonControl : UserControl
{
   private TextBox textbox1;
   private Button button1;

   public TextAndButtonControl()
   {
       this.textbox1 = new TextBox();
       this.Controls.Add(this.textbox1);
       this.button1 = new Button();
       this.Controls.Add(this.button1);
       this.RenderControl();
       this.button1.Click += new EventHandler(button1_Click);
   }

   void button1_Click(object sender, EventArgs e)
   {
       MessageBox.Show("Hi");
   }

   public string Text
   {
       get { return this.textbox1.Text; }
       set { this.textbox1.Text = value; }
   }

   public string ButtonText
   {
       get { return this.button1.Text; }
       set { this.button1.Text = value; }
   }

   public void RenderControl()
   {
       this.textbox1.Location = new Point(0, 0);
       this.textbox1.Width = 2 * this.Width / 3;
       this.textbox1.Height = this.Height;
       this.button1.Location = new Point(2 * this.Width / 3, 0);
       this.button1.Width = this.Width / 3;
       this.button1.Height = this.Height;
    }
}


Затем в основной форме:

private void Form1_Load(object sender, EventArgs e)
{
    TextAndButtonControl bcol = new TextAndButtonControl();
    bcol.Text = "Button Column ";
    bcol.ButtonText = "Click Me";
    bcol.Name = "btnClickMe";
    bcol.RenderControl();
    dgMainGrid.Controls.Add(bcol);
}


Но я получаю ... : https://ibb.co/dgTaNc

1 Ответов

Рейтинг:
2

RickZeeland

Смотрите ответ здесь: Добавить командную кнопку в DataGridView в приложении C# Windows[^]
Если вы хотите, чтобы кнопка появлялась только в активной ячейке, вам придется сделать какую-то пользовательскую раскраску ячеек, я боюсь, понимаете: Практическое руководство.Событие CellPainting (System.Окна.Формы)[^]
Другой способ может быть сделать это как в этом примере ComboBox: Практическое руководство.Событие CellPainting (System.Окна.Формы)[^]


Member 12361495

Не совсем, мне нужно поле для отображения данных (они разные) и кнопка сразу в одном поле (см. картинку, которую я разместил).