Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Theodor Johnson
David Čápka:

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
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Theodor Johnson
David Jančík [sczdavos]:
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
Čím více času dostaneš, tím méně ho máš.
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
Theodor Johnson:

Š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
Přecházím na "Cross-Platform Development"
Avatar
matesax
Redaktor
Avatar
Odpovídá na Theodor Johnson
matesax:

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:

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:

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
Přecházím na "Cross-Platform Development"
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.