2011-01-11 13 views
2

Wie kann ich Text von DataGridView Cell abrufen und auf der Schaltfläche anzeigen. Grundsätzlich habe ich zwei Formulare auf meinem Projekt (Form1 & Form2).Wie kann man Text aus der Zelle datagridview abrufen und in der Schaltfläche anzeigen?

-In Form1 Ich habe zwei Tasten (Starter & Main). Beide diese Schaltflächen auf Click-Ereignis, sie rufen Datenbank sql-Abfrage und generiere in die Datensätze als Schaltflächen.

-In Form2 Ich habe eine Taste (Starter). Auch diese Schaltfläche beim Klick-Ereignis ruft die Datenbank sql-query auf und generiert Datensätze in DatagridView. Jetzt

in Form2, wenn ich in der Zelle unter dem Auf Lager Spalte DOUBLE_CLICK, ein Dialogfenster öffnet sich und ermöglicht es mir, die Nummer einzugeben, um diese bestimmte Zelle. Lets sagen Row-1:

Soup  Starter  10  <Allways On Stock> 

auf diese So basiert, wie kann ich den Wert dieser Zelle nehmen = 10 und dispalyit auf der rechten unteren Ecke des Button (in diesem Fall Taste Suppe) wie folgt:

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

Könnte mir bitte jemand helfen und lösen dieses Problem ....

Vielen Dank im Voraus ...

Mit freundlichen Grüßen

lapeci


hier ist der Code von Cellclick-Ereignis von 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; 
        } 
       } 
      } 
     } 

Und das ist die InputBox Dialog Menge eingeben in die Zelle ...

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

ist der Code, wie im Schaltflächen auf form1 erstellen und dann die Datensätze der Datenbank übernehmen und asign Werte zu diesen Tasten


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

Ist das ein WinForms (Desktop) Anwendung oder eine Web-Anwendung von ASP.NET? –

+1

Hallo Leniel, es ist eine WinForms (Desktop) App – LAPECI

Antwort

0

Check this out:

Multiline Text as the button label - Windows Forms

Zu der Zeit Sie erhalten den Wert 10, versuchen Sie, die Schaltfläche text -Eigenschaft mit diesem Wert festzulegen. Sie sollten einige Formatierungen vornehmen (entsprechend Leerzeichen hinzufügen), um den Text im unteren rechten Teil der Schaltfläche anzupassen.

Detailliertere Erklärung:

Wenn das Dialogfeld erscheint Sie den Wert 10 eingeben Wenn Sie diese Nummer in der Datagrid-Zelle gesetzt (ich glaube, Sie irgendeine Art von Event-Handler haben tun diesen Job) Sie sollten auch Setzen Sie die Texteigenschaft der Schaltfläche btnSoup.Text = 10 innerhalb desselben Ereignishandlers.Um den Text in der Schaltfläche auszurichten, verwenden Sie den oben angegebenen Link.

+0

Hallo Leniel, ich bin neu in C# programmieren, gerade angefangen zu lernen, könntest du bitte sachlich klarstellen ... danke im voraus – LAPECI

+0

Jetzt hast du mich verloren :) ich bin cmpleely verwirrt – LAPECI

+0

kann ich Ihnen etwas von meinem Code, was ich bisher getan habe – LAPECI

0

Sie könnten ein Etikett oben auf den Knopf an setzen genau dort, wo Sie es wollen und aktualisieren Sie dann das Etikett

Verwandte Themen