Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Využij akce až 80% zdarma při nákupu e-learningu. Více informací .
BF summer
Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:14.9.2012 19:52

Narazil jsem na problém kvůli kterému mi vznikla chyba, nevíte někdo jak zajistit proměnné jako třeba location v neaktivním formu? Příklad.: Form1.ActiveFor­m.Location.X funguje jen v aktivnm formu, ale pro správnou funkčnost bych potřeboval tuto funkci i v neaktivním formu.

Odpovědět
14.9.2012 19:52
Mo8ilε 15 Ѐλđ
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Čápka:14.9.2012 22:35

Existuje něco jako Application.Forms, Application.O­penForms nebo tak, kde jsou uloženy všechny formy.

Nahoru Odpovědět
14.9.2012 22:35
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Jančík:14.9.2012 22:47
if (Application.OpenForms.OfType<Form1>().Any())
{
Application.OpenForms.OfType<Form1>().First(). -> instance/proměnné etc (nezapomeň jim změnit modifikátor, privátní neuvidíš);
}

Nebo si je můžeš nastavit na statické a přistupovat k nim přes Form1.

Nebo můžeš do Program.cs napsat tohle:

public static Form1 mainFormInstance;

       [STAThread]
       static void Main()
       {
           Application.EnableVisualStyles();
           Application.SetCompatibleTextRenderingDefault(false);

           mainFormInstance = new Form1();
           Application.Run(mainFormInstance);
       }

A si dáš Program.mainFormInstance.

etc...

Editováno 15.9.2012 19:22
Nahoru Odpovědět
14.9.2012 22:47
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na David Jančík
Theodor Johnson:15.9.2012 16:13

Jaký je tam potřeba using? zkoušel jsem to s tou instancí formu, ale nevím jaký je na "mainForm" potřeba using, když dám ten malý modrý obdelník tak nemám na výběr přidání usingu ale generate class for 'mainForm', generate new type...

Nahoru Odpovědět
15.9.2012 16:13
Mo8ilε 15 Ѐλđ
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na David Jančík
Theodor Johnson:15.9.2012 17:19

Špatně jsem to pochopil, až pozdě mě napadlo že mainForm nepotřebuje using ale mám ho nahradit názvem formu

Nahoru Odpovědět
15.9.2012 17:19
Mo8ilε 15 Ѐλđ
Avatar
matesax
Redaktor
Avatar
Odpovídá na Theodor Johnson
matesax:15.9.2012 17:45

Můžeš vytvořit most mezi formy (Možná jednoduší řešení.):

Form1:

using System;
using System.Windows.Forms;

namespace WFASample
{
    public partial class Form1 : Form
    {
        private Form2 f2;

        public Form1()
        {
            InitializeComponent();

            f2 = new Form2(this);
        }

        private void button1_Click(object sender, EventArgs e)
        {
pozici dostaneš: MessageBox.Show(f2.ActualPosition.ToString());
            f2.Show();
        }
    }
}

Form2:

using System;
using System.Windows.Forms;
using System.Drawing;

namespace WFASample
{
    public partial class Form2 : Form
    {
        Form1 most = null;

        public Form2(Form1 callingForm)
        {
            InitializeComponent();

            most = callingForm as Form1;
        }

        private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
            this.Hide();
        }

        public Point ActualPosition
        {
            get { return this.Location; }
        }
    }
}
Editováno 15.9.2012 17:47
 
Nahoru Odpovědět
15.9.2012 17:45
Avatar
matesax
Redaktor
Avatar
Odpovídá na Theodor Johnson
matesax:15.9.2012 17:50

Přijde mi to lepší, než řešit statiku atp... Jen poznámka - musel jsem nahradit ukončení formu Form2 za jeho skrytí, jelokož po jeho ukončení by nešlo Form2 znovu zavolat - při ukončení dojde ke smazní... Tento problém lze vyřešit novou inicializací.

Tedy před každé Show() bys musel dát:

f2 = new Form2(this);
Editováno 15.9.2012 17:52
 
Nahoru Odpovědět
15.9.2012 17:50
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na matesax
Theodor Johnson:15.9.2012 17:56

O statiku tu nejde ta je přece už v konstuktoru Program.cs, tady jde jen o to dát si form do proměnné se kterou se dá pracovat jako s běžnou funkcí, a nechápu k čemu tvořit mosty mezi formy, chtěl jsem jen vědět jak volat funkce Form1.ActiveForm.() i v neaktivním formu

Nahoru Odpovědět
15.9.2012 17:56
Mo8ilε 15 Ѐλđ
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.