2011-01-11 6 views
2

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

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

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

Сейчас в Form2 когда я DOUBLE_CLICK внутри клетки под Количество в наличии колонке, чтобы открыть диалоговое окно всплывает и позволяет мне войти в число в этой конкретной ячейке. Допустим, Роу-1:

Soup  Starter  10  <Allways On Stock> 

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

############## 
#   # 
# 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(); 
     } 
    } 
} 

это код, как им создание кнопок на Form1, а затем взять записи базы данных и Asign значения этих кнопок


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 = ""; 
      } 
     } 
+0

Является ли это WinForms (рабочий стол) приложение или веб-приложений ASP.NET? –

+1

Привет, Leniel, его приложение WinForms (рабочий стол) – LAPECI

ответ

0

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

Multiline Text as the button label - Windows Forms

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

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

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

+0

Привет, Leniel, я новичок в программировании на C#, только начал учиться, не могли бы вы прояснить релевантно ... спасибо заранее – LAPECI

+0

Теперь вы потеряли меня :) Я получше confused – LAPECI

+0

Могу ли я отправить вам часть моего кода, что я сделал до сих пор – LAPECI

0

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