Potřeboval bych poradit s přidáváním objektu(textbox, label atd.) na otevřený formulář(Form1) z jiné třídy, která nám zpracovává data z databáze za pomoci LINQ.
Když přidáváme objekt po stisknutí tlačítka na aktivním formuláři Form1, tak se prvek přidá, a vše pracuje, jak má, ale pokud se přidává objekt i stejným kódem, ale volaný z třídy "zaznam", tak se tento objekt na otevřeném formuláři nezobrazuje. Pokud
si ale vytvořím novou instanci formuláře příkazem ( Form1 novyfrm = new Form1(); ) a použiji novyfrm.Show(); , tak se tento formulář zobrazí jako nový, a přidávaný objekt, se tam objeví. Nedaří se provést něco, jako přidání objektu na původní formulář, a jen
jakoby znovu zobrazení původních a i nově vytvořených objektů.
Používám VisualStudio 2015, pokud je ve verzích nějaký rozdíl.
Pro kontrolu, zda někde nedělám nějakou zásadní chybu přikládám část funkčního kódu s popisem.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace IS2
{
public partial class Form1 : Form
{
Rozvrh rzv = new Rozvrh(); //vyrobime si novy rozvrh
private TextBox[] txtPole = new TextBox[50];
int A = 1; //deklarace promenne pro posun prvku
public Form1()
{
InitializeComponent();
//vse toto je nastaveno v properties, zde je to hlavne, pro zabrazeni co se ma menit
this.Width = 1880; //sirka formulare
this.Height = 1000; //vyska formulare
this.StartPosition = FormStartPosition.CenterScreen; //startovaci pozice formulare
}
private void btn_zobraz_Click(object sender, EventArgs e)
{
//AddNewTextBox(); //po odkomentovani se textbox prida dobre
rzv.smazat_data();
rzv.vytvorit(datumVyberu.SelectionStart); //posleme vybrany datum
rzv.vykreslit(tlp_cas); //vykreslime si zakazky
//AddNewTextBox(); //po odkomentovani se textbox prida dobre
}
public void vykreslit_txt_2(int y, int x, int delka, int id_zakazky, int cisloPole)
{
System.Windows.Forms.TextBox txt = new System.Windows.Forms.TextBox();
this.Controls.Add(txt);
txt.Top = A * 28; //od horniho okraje dolu
txt.Left = 120; //od leveho okraje
txt.Text = "TextBox" + this.A.ToString(); //zapise do policka text
A++;
//AddNewTextBox(); //po odkomentovani se textbox NEPRIDA jelikoz neni volany po stisku tlacitka
}
public System.Windows.Forms.TextBox AddNewTextBox()
{
//kod co zobrazuje novy txtbox na formulari
System.Windows.Forms.TextBox txt = new System.Windows.Forms.TextBox();
this.Controls.Add(txt);
txt.Top = A * 28; //od horniho okraje dolu
txt.Left = 15; //od leveho okraje
txt.Text = "TextBox" + this.A.ToString(); //zapise do policka text
A++;
return txt;
}
private void button1_Click(object sender, EventArgs e)
{
AddNewTextBox(); //po kliknuti na tlacitko na formulari, se novy txtbox zobrazuje spravne
}
}
}