Как извлечь текст из ячейки таблицы данных и отобразить ее в кнопке? - PullRequest
2 голосов
/ 11 января 2011

Как я могу получить текст из ячейки DataGridView и отобразить его на кнопке.В основном у меня есть две формы в моем проекте (Form1 & Form2).

-In Form1 У меня есть две кнопки (Starter & Main).Обе эти кнопки при событии щелчка, они вызывают sql-запрос базы данных и генерируют в форме записи в виде кнопок.

-In Form2 У меня есть кнопка (Starter).Также эта кнопка при событии click вызывает базу данных sql-query и генерирует записи в DatagridView.

Теперь в Form2 , когда я дважды щелкаю внутри ячейки под столбцом Количество на складе Появляется диалоговое окно, позволяющее мне ввести номер в эту ячейку. Допустим, строка-1:

Soup     Starter     10     <Allways On Stock>

Итак, на основании этого, как я могу взять значение этой ячейки = 10 и отобразить нанижний правый угол кнопки (в данном случае кнопка суп) вроде так:

##############
#            #
#   Soup     #
#         10 #
##############

Может ли кто-нибудь помочь мне, пожалуйста и решить эту проблему ....

Заранее спасибо ...

С уважением

lapeci


вот код события cellclick для datagridview

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            // make sure that the click was in the right column
            if (e.ColumnIndex == 2)  // I used 1 here because I didn't put a column for FoodType, you should use 2.
            {
                // Give it a value in case the cell is empty
                string cellContent = "0";
                if (this.dataGridView1[e.ColumnIndex, e.RowIndex].Value != null)
                {
                    cellContent = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
                }

                using (InputBox ib = new InputBox("Enter new stock amount:", this.dataGridView1[0, e.RowIndex].Value.ToString(), cellContent))
                {
                    if (ib.ShowDialog() == DialogResult.OK)
                    {
                        this.dataGridView1[e.ColumnIndex, e.RowIndex].Value = ib.Result;
                        cellContent = ib.Result;
                    }
                }
            }
        }

И это диалог InputBox длявведите количество в ячейку ...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DtposApplication
{
    public partial class InputBox : Form
    {
        public InputBox(string text, string caption, string defaultValue)
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            this.Text = caption;  //.Clone().ToString();


            Size size;
            using (Graphics g = this.CreateGraphics())
            {
                Rectangle screen = Screen.PrimaryScreen.WorkingArea;
                SizeF sizeF = g.MeasureString(text, lblPrompt.Font, screen.Width - 20);
                size = sizeF.ToSize();
                size.Width += 4;
            }

            if (size.Width < 310)
            {
                size.Width = 310;
            }
            Size clientSize = this.ClientSize;
            clientSize.Width += size.Width - lblPrompt.Width;
            clientSize.Height += size.Height - lblPrompt.Height;
            this.ClientSize = clientSize;
            lblPrompt.Text = text;
            txtResult.Text = defaultValue;
            this.DialogResult = DialogResult.Cancel;
        }

        void CancelButtonClick(object sender, System.EventArgs e)
        {
            result = null;
            this.Close();
        }

        void AcceptButtonClick(object sender, System.EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            result = txtResult.Text;
            this.Close();
        }

        string result;

        public string Result
        {
            get
            {
                return result;
            }
        }

        private void btnSeven_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnSeven.Text + "7";
        }

        private void btnTwo_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnTwo.Text + "2";
        }

        private void btnOne_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnOne.Text + "1";
        }

        private void btnSix_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnSix.Text + "6";
        }

        private void btnFive_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnFive.Text + "5";
        }

        private void btnFour_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnFour.Text + "4";
        }

        private void btnNine_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnNine.Text + "9";
        }

        private void btnEight_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnEight.Text + "8";
        }

        private void btnThree_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnThree.Text + "3";
        }

        private void btnZero_Click(object sender, EventArgs e)
        {
            txtResult.Text += btnZero.Text + "0";
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            txtResult.Clear();
            txtResult.Focus();
        }
    }
}

- это код, которым я создаю кнопки на форме1, а затем извлекает записи базы данных и присваивает значения этим кнопкам


private void FoodAddButtons(DataTable table)
        {
            int xpos = 5;
            int ypos = 5;
            int space = 2;
            VistaButtonTest.VistaButton newButton = null;
            DtposMenuBS.Sort = "FoodPrice";
            try
            {
                foreach (DataRowView dr in DtposMenuBS.List)
                {
                    newButton = new VistaButtonTest.VistaButton();
                    newButton.ButtonText = dr["FoodName"].ToString();
                    newButton.AutoEllipsis = true;
                    newButton.Width = 152;
                    newButton.Height = 70;
                    newButton.CornerRadius = 4;
                    newButton.Font = new System.Drawing.Font("Arial Narrow", 15.00F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    newButton.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255)))));
                    newButton.ForeColor = System.Drawing.Color.Black;
                    newButton.HighlightColor = System.Drawing.Color.DarkGray;
                    newButton.GlowColor = System.Drawing.Color.DimGray;
                    if (xpos + newButton.Width > this.FoodMenuPanel.ClientSize.Width)
                    {
                        ypos += newButton.Height + space;
                        xpos = 5;
                    }
                    newButton.Location = new Point(xpos, ypos);
                    xpos += newButton.Width + space;
                    newButton.Click += ItemSelection1;
                    this.FoodMenuPanel.Controls.Add(newButton);
                }
            }
            finally
            {
                DtposMenuBS.Sort = "";
            }
        }

Ответы [ 2 ]

0 голосов
/ 11 января 2011

Вы можете поместить ярлык поверх кнопки именно там, где вы хотите а затем обновите метку

0 голосов
/ 11 января 2011

Проверьте это:

Многострочный текст в качестве метки кнопки - Windows Forms

Когда вы получите значение 10, попробуйте установить свойство текста кнопкис этим значением.Вы должны выполнить некоторое форматирование (соответственно, добавив пробелы), чтобы разместить текст в правой нижней части кнопки.

Более подробное объяснение:

Когда появится диалоговое окно, введите значение10. Когда вы устанавливаете это число в ячейке таблицы данных (я думаю, что у вас есть какой-то обработчик событий, выполняющий эту работу), вы также должны установить свойство текста кнопки btnSoup.Text = 10 в том же обработчике событий.Чтобы выровнять текст в кнопке, используйте ссылку, которую я вам предоставил выше.

...