Wskazanie elementu z form1 w form2

0

Znowu problem :X
Mam zrobione 2 formy. Główne okno apki i formularz . Formularz jest wywoływany przez 2 buttony "dodaj" i "edytuj"
z okna głównego.Formularz dla buttona edytuj" będzie się różnił tylko tym ,że będzie miał textboxy wypełnione odrazy tym co wskaże użytkownik w w datagridzie formy 1.
Jak mam wskazać formularzowi ,który button go wywołał ? Próbowałem robić coś w oparciu o sender tego buttona ale wyszły mi takie czary ,że wstyd pokazać .
Pola tekstowe formularza dla edycji będę uzupełniał poprzez wskazanie w datagridzie1 odpowiedniego wiersza ,który chcę edytować czymś takim :

textBox1.Text = dataGridView1.CurrentRow.Cells[numer kolumny].Value.ToString();

tyle ,że dalej nie wiem jak wskazać datagrid z formy 1 w formie 2 .

1

Jak mam wskazać formularzowi ,który button go wywołał

Nie wskazuj który button go wywołał, tylko dodaj parametr (np. bool jeśli są tylko dwie wartości) do konstruktora formy.

nie wiem jak wskazać datagrid z formy 1 w formie 2

Nie wskazuj, tylko zrób w formie 2 eventa i oprogramuj go w formie 1.

0

Wywołaj formę poprzez ShowDialog w formie pierwszej. W drugim formularzu stwórz dodatkowy konstruktor który przyjmie obiekt do edycji. Przy dodawaniu wywołujesz konstruktor bez obiektu.

0

A czy takie odwołanie się do kontrolki z innej formy jest właściwe ?

(Application.OpenForms["Form1"] as Form1).dataGridView1
0

Tak wiem eventami się zająłem już zgodnie z Waszymi radami tyle,że jeszcze nie oswoiłem się z nimi zbyt dobrze .

W formie1 wyświetlam w datagridzie dane z bazy. Tam też mam button edytuj który za pomocą show.dialog() wywołuje forme2
zawierającą pola tekstowe .
W formie 2 mam button Save ,który nawiązuje połączenie z bazą za pomocą klasy connection .i robi update danych prostym polceniem sql .
Chciałem jednocześnie wypełnić pola tekstowe tej formy 2 tym co zawiera zaznaczony wiersz w datagridzie w formie 1 tak żeby wygodnie można było je edytować w przypadku gdy chcemy edytować tylko jedno pole bez konieczności uzupełniania pozostałych od nowa . Zdaje sobie sprawę ,że nie tak się powinno pisać w C# ale jest to mój pierwszy program na dobrą sprawę i z delegatami ,eventami ma trochę problemy jak w nocy zauważyłem :X

 public void btnSave_Click(object sender, EventArgs e)
        {
         
            ConnectionClass c = new ConnectionClass();
            c.OpenConn();
            DataSet ds = new DataSet();
        
            string cmd = "UPDATE Zespoly SET Nazwa='" + metroTextBox1.Text+ "' , Pietro = " + metroTextBox2.Text + ", Pracownicy_ID_zespolu = " +    metroTextBox3.Text + " WHERE '" + (Application.OpenForms["Form1"] as Form1).dataGridView1.SelectedRows[0].Cells[0].Value.ToString() + "'";
           
            OdbcDataAdapter da = new OdbcDataAdapter(cmd, c.cn);
            OdbcCommandBuilder cmdb = new OdbcCommandBuilder(da);

           
            c.CloseConn();
           
}         
1

Czemu nie przekażesz wartości dataGridView1.SelectedRows[0].Cells[0].Value.ToString() do drugiej formy poprzez konstruktor?

0

Temat poruszany setki razy rocznie. Nieumiejętność używania wyszukiwarki nie wróży Ci kariery dobrego programisty.

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