Diskuze: Jak otevřít formulář, podle jména v proměnné, do karty tabPage?
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nefungovalo by to spíš takto:
= Form.FromHandle(Activator.CreateInstance(....));
(nezkoušel jsem to, nikdy jsem to nepotřeboval, takže jen střílím od boku)
Moc děkuji. Bohužel až do příští soboty nebudu u pc, ale potom to hned vyzkouším a odepíšu.
Původní příspěvek ignoruj, dnes jsem měl čas si to zkusit:
using System;
using System.Reflection;
using System.Windows.Forms;
// Projekt: Aplikace Windows Forms .NET Framework 4.7.2
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBoxClassName.Text = "Form2";
}
private void button1_Click(object sender, EventArgs e)
{
Form f = CreateFormFromClassName(textBoxClassName.Text);
//f.BringToFront();
f.Dock = DockStyle.Fill;
f.TopLevel = false;
f.Visible = true;
f.FormBorderStyle = FormBorderStyle.None;
TabPage p = new TabPage(textBoxClassName.Text);
p.Controls.Add(f);
tabControl1.TabPages.Add(p);
}
private Form CreateFormFromClassName(string className)
{
Assembly assembly = Assembly.GetExecutingAssembly();
string assemblyName = assembly.GetName().Name;
Type type = assembly.GetType(assemblyName + "." + className);
return (Form)Activator.CreateInstance(type);
}
}
}
Je to bez ošetření chyb a je to trošku roztahané, abych to krokoval, ale funguje to. Takže už si to jen dolaď.
Moc děkuji za tvůj čas. Hned v sobotu se na to podívám.
Matěj Zelenka
Ještě jednou ahoj,
mám ještě problém, že ono to ten formulář hledá v hlavním projektu a on
je ve stejném sestavení, ale ve vedlejším projektu s jiným názvem. Takže
bych potřeboval, aby to místo "WindowsFormsApp2.Form2" otevíralo
"Form2.Form2".
Matěj
Zdarec. Nestačilo by ti to takto?
private void button1_Click(object sender, EventArgs e)
{
Form f = CreateFormFromClassName(textBoxClassName.Text);
if (f != null)
{
f.Dock = DockStyle.Fill;
f.TopLevel = false;
f.Visible = true;
f.FormBorderStyle = FormBorderStyle.None;
TabPage p = new TabPage(textBoxClassName.Text);
p.Controls.Add(f);
tabControl1.TabPages.Add(p);
}
}
private Form CreateFormFromClassName(string className)
{ //Form2 a Form3 musíš samozřejmě přilinkovat k projektu
switch(className)
{
case "Form2": return new Form2();
case "Form3": return new Form3();
default: return null;
}
}
Asi jsme se špatně pochopili.
Vytvořil jsem projekt Knihovna tříd .NET a vní formulář(aby to bylo v
souboru zvlášť od projektu). A teď potřebuji tento formulář zobrazit do
karty TabPage pomocí názvu v proměnné.
Ten tvůj předchozí kód funguje dobře, ale ten furmulář hledá v hlavním
projektu "WindowsFormsApp2.Form2" namísto ve vedlejším "Form2.Form2".
tak použij:
Assembly assembly = Assembly.LoadFile(_strUplnaCestaKeKnihovne);
Zobrazeno 10 zpráv z 10.