2016-05-11 15 views
1

Ich möchte während der Laufzeit eine Schaltfläche mit einem Wert zu meiner Registerkarte hinzufügen. Viele Tutorials zeigen, wie es beim Erstellen einer Verbindung mit der Datenbank gemacht wird. Gibt es eine Möglichkeit, dies ohne Verbindung zur Datenbank zu tun?C# Hinzufügen einer Schaltfläche mit Wert zur Laufzeit

enter image description here

Nachdem ich Eingabedaten in beiden Textbox und speichern geklickt haben, sollte neue Schaltfläche auf der Registerkarte Steuerelement auf einer anderen Form erscheinen.

+5

Zeigen Sie uns Ihren Code. Das Hinzufügen einer Schaltfläche zu etwas allein hat absolut nichts mit der Verbindung zu einer Datenbank zu tun, also ja, es ist möglich, dies zu tun. – Glubus

+0

Ein wichtiger Teil dieser Frage ist, welchen Rahmen Sie verwenden: Versuchen Sie, eine Schaltfläche zu einer Webseite hinzuzufügen? Zu einer Windows-Anwendung (WPF)? –

+0

@JamieF Ich benutze Fensterformulare Anwendung – Key

Antwort

3

In Sie speichern Taste put:

private void btnSave_Click(object sender, EventArgs e) 
      { 
       x = 4; 
       y = panel1 .Controls.Count * 70; 
       Button newButton = new Button(); 
       newButton.Height = 150; 
       newButton.Width = 60; 
       newButton.Location = new Point(x, y); 
       newButton.Text= "your text"; 
       newButton.Click += new  
       System.EventHandler(Button_Click);    
       tabControl1.TabPages [0].Controls.Add(newButton); 

     } 

Und auch können Sie den Klick auf neue Schaltfläche erstellt Handel:

public void Button_Click(object sender, EventArgs e) 
    { 
     Button button = (Button)sender ; 
     MessageBox.Show("Button is pressed "+button .Text); 

    } 
+0

Vielen Dank, Ihr Code funktioniert, um eine neue Schaltfläche auf der Registerkarte anzuzeigen, aber die Schaltfläche "Speichern" ruft keine Daten aus der Textbox ab. – Key

+0

Sie können newButton.Text ändern = "Ihr Text"; zu newButton.Text = textbox1.text "; –

+0

Wenn die Antwort für Sie hilfreich war, bitte markieren Sie es, danke –

-1
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 Buttons 
{ 
    public partial class Form1 : Form 
    { 
     const int ROWS = 5; 
     const int COLS = 10; 
     public Form1() 
     { 
      InitializeComponent(); 
      this.Load += new System.EventHandler(this.Form1_Load); 
     } 
     public void Form1_Load(object sender, EventArgs e) 
     { 
      new MyButton(ROWS, COLS, this); 
     } 


    } 
    public class MyButton : Button 
    { 
     const int WIDTH = 50; 
     const int HEIGHT = 50; 
     const int SPACE = 5; 
     const int BORDER = 20; 

     public static List<List<MyButton>> buttons { get; set; } 
     public static List<MyButton> buttonList { get; set; } 
     public Form1 form1; 
     public int row { get; set; } 
     public int col { get; set; } 
     public MyButton() 
     { 
     } 
     public MyButton(int rows, int cols, Form1 form1) 
     { 
      buttons = new List<List<MyButton>>(); 
      buttonList = new List<MyButton>(); 

      this.form1 = form1; 
      for(int row = 0; row < rows; row++) 
      { 
       List<MyButton> newRow = new List<MyButton>(); 
       buttons.Add(newRow); 
       for (int col = 0; col < cols; col++) 
       { 
        MyButton newButton = new MyButton(); 
        newButton.Height = HEIGHT; 
        newButton.Width = WIDTH; 
        newButton.Top = row * (HEIGHT + SPACE) + BORDER; 
        newButton.Left = col * (WIDTH + SPACE) + BORDER; 
        newButton.row = row; 
        newButton.col = col; 
        newRow.Add(newButton); 
        buttonList.Add(newButton); 
        newButton.Click += new System.EventHandler(Button_Click); 
        form1.Controls.Add(newButton); 
       } 
      } 
     } 
     public void Button_Click(object sender, EventArgs e) 
     { 
      MyButton button = sender as MyButton; 
      MessageBox.Show(string.Format("Pressed Button Row {0} Column {1}", button.row, button.col)); 

     } 

    } 
} 
+1

Wie beantwortet das die Frage von OP? Sie verwenden Spalten und Zeug, OP nicht. Wenn Sie auf eine Meldung klicken, möchte OP dieses Verhalten nicht anzeigen. Natürlich könnte OP diesen Code verwenden, um in seinem eigenen Projekt herumzuspielen, aber Sie könnten zumindest Ihr Code-Snippet genauer ausführen. – Glubus

0

Ich schlage vor, eine solche Entscheidung

Hauptform:

namespace stackoverflow 
{ 
    public partial class MainForm : Form 
    { 
     private static Form2 new_form = new Form2(); 

     public MainForm() 
     {  
      InitializeComponent(); 
      new_form.Show(); 
     } 


     void Button1Click(object sender, EventArgs e) 
     { 
      new_form.CreateBtn(richTextBox1.Text); 
     } 
    } 
} 

Zweite Form:

namespace stackoverflow 
{ 
    public partial class Form2 : Form 
    { 
     private Button btn = null; 

     public Form2() 
     { 
      InitializeComponent(); 
     } 

     public void CreateBtn(string text) { 
      if (btn == null) { 
       btn= new Button(); 
       btn.Parent = this.tabPage1; 
      } 
      btn.Text = text; 
      this.Refresh(); 
     } 
    } 
} 
Verwandte Themen