[VS] Problem z enabled

0

Witam

Piszę programy w Delphi i chcę zacząć zabawę z VS C#, po kilku godzinach pracy z tym środowiskiem trafiłem na pewien problem. Mam 2 formy (form, form2) na form1 znajduje się przycisk który po naciśnięciu pokazuje mi form2 (Visible = true) a form1 staje się nieaktywny (Enabled=false) i tak się dzieje :

    private void button1_Click(object sender, EventArgs e)
    {
       this.Enabled = false;
      

       Form2 forma2 = new Form2();
          forma2.Visible = true;
    }

Lecz gdy chcę zamknąć form2 i zrobić form1 aktywnym wtedy tylko się zamyka form2 a form1 dalej jest nieaktywny:

    private void button1_Click(object sender, EventArgs e)
    {
        Form1 forma1 = new Form1();
            forma1.Enabled = true ;
        this.Close();
    }

Co robię żle ??

Czy da się bezpośrednio odwoływać do innej formy : form2.enabled = true, tak jak to się robiło w Delphi, wystarczyło wylko dodać do "uses" nazwę tej formy;

Pozdrawiam

0

Mozna, ale nie tak jak to robisz. Ty z poziomu drugiego okienka tworzysz nowa formatke i jej ustawiasz enabled (to nie jest ta sama, co pierwsza).

Zrob tak jak tutaj
http://4programmers.net/Forum/viewtopic.php?id=96281

pozdrawiam
johny

0

Dziękuję za odpowiedź, czy mógłby mi Pan pomóc wstawić ten kod w odpowiednie miejsce bo sobie nie daje rady. Jak dojdą do mnie książki dotyczące C# to nie będę zadawał takich prostych pytań.

namespace WindowsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

}

}

class Form1 : Form
{
Jakastam klasa = new Jakastam(this);
}
class Jakastam
{
Form edytowalnaForma;
public Jakastam(Form Formatka)
{
edytowalnaForma = Formatka
}
edytowalnaForma.textBox1.Text = "AAA";
}

0

Np. tak:

namespace WindowsApplication1
{
    public partial class Form2 : Form
    {
        Form ParentForm;
        public Form2(Form Parent)
        {
            ParentForm = Parent;
            InitializeComponent();
        }

    }
}

... metoda form1
{
  new Form2(this).Show();
}

zdarzenie form2

{
   ...   //costam
   ParentForm.Enabled = true;
}

Innymi slowy musisz zapamietac referencje do obiektu nadrzednego (w tym wypadku okienka wywolujacego) i pozniej korzystac do woli :)

Acha, prawdopodobnie to co chcesz osiagniesz rowniez poprzez ShowDialog().

pozdrawiam
johny

0

Bardzo Panu dziękuję.

johny_bravo napisał(a)

Acha, prawdopodobnie to co chcesz osiagniesz rowniez poprzez ShowDialog().

pozdrawiam
johny

To drugie okienko jest mi potrzebne przy wczytywaniu danych do pierwszego formularza, otwiera mi się forma główna po czym otwiera się druga forma na której ma pisać 'wczytywanie danych' i po wczytaniu wszystkiego chcę żeby forma pierwsza stała się dopiero aktywna.

0

To pokazuj druga formatke metoda ShowDialog(). Otwiera sie wtedy okienko modalne (czyli nie da sie uaktywnic formatki-rodzica). Mniej kombinacji i zazwyczaj wystarcza. Wtede nie musisz nic przekazywac, zapamietywac, wystarczy po prostu wywolac ta metoda.

pozdrawiam
johny

1 użytkowników online, w tym zalogowanych: 0, gości: 1