C# - wywołanie metody w innym formie

0

Witam,

mam taki problem:

W Form1 mam metodę:

public void WczytajDystrybutorow()
        {
            dataGridView2.Rows.Clear();
            try
            {
                string oradb = "Data Source=(DESCRIPTION="
                            + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=adres_hosta)(PORT=1521)))"
                            + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=adres_db)));"
                            + "User Id=" + textBox1.Text + ";Password=" + textBox2.Text + ";";

                OracleConnection conn = new OracleConnection(oradb);
                conn.Open();



                string sql = "select d.id_dystrybutora, d.nazwa_dystrybutora, p.nazwa_panstwa, d.strona_www from dystrybutorzy d, panstwa p where d.id_panstwa=p.id_panstwa";
                OracleCommand cmd = new OracleCommand(sql, conn);
                cmd.CommandType = CommandType.Text;
                OracleDataReader dr = cmd.ExecuteReader();

                int wiersz = 0;
                int kolumna = 0;

                while (dr.Read())
                {
                    dataGridView2.Rows.Add();
                    dataGridView2.Rows[wiersz].Cells[kolumna].Value = Int16.Parse(dr[kolumna++].ToString());
                    dataGridView2.Rows[wiersz].Cells[kolumna].Value = dr[kolumna++].ToString();
                    dataGridView2.Rows[wiersz].Cells[kolumna].Value = dr[kolumna++].ToString();
                    dataGridView2.Rows[wiersz++].Cells[kolumna].Value = dr[kolumna].ToString();
                    kolumna = 0;
                }
            }
            catch
            {
                MessageBox.Show("Wczytanie dystrybutorow nie powiodło się!");
            }
        }

W Form2 próbuję tą metodę wywołać:

Form1 forma1 = new Form1();
forma1.WczytajDystrybutorow();

Metoda WczytajDystrybutorow() nie wykonuje się (jeśli odpalę ją w Form1 to działa dobrze). Ale jak wstawię gdzieś tam np. MessageBox.Show("Test") to on się wyświetla.

Czy ktoś może wie co robię nie tak?

0

nie żartuj, kod wywołujesz, to się wykonuje. nie działa tylko tak, jak się tego spodziewasz. może więc wytłumaczysz, co konkretnie znaczy "nie wykonuje się"? że nic nie widać? to może pokaż swoją formatkę po jej stworzeniu... służy do tego metoda Show().
o to chodziło? bo jeśli tak, to następnym razem użyj google, bo to rozwiązanie znalazłem w pierwszym wyniku.

0

Form1 forma1 = new Form1();

Przypuszczam, że te formę już masz widoczną, czyli stworzoną - to co robisz to tworzenie drugiej instancji formy. Na pewno nie o to chodzi.

// chyba jakaś publiczna zrzuta na wróżkę by się przydała, nie sądzisz? - Ł

0
Deti napisał(a)

Form1 forma1 = new Form1();

Przypuszczam, że te formę już masz widoczną, czyli stworzoną - to co robisz to tworzenie drugiej instancji formy. Na pewno nie o to chodzi.

Zgadza się, mam już otwartą (stworzoną?) formę Form1, odpalam z niej formę Form2, i ta forma Form2 ma wywołać metodę WczytajDystrybutorow() z Form1.

Jeśli tak jak robię jest źle to w jaki sposób mam uruchomić tą metodę w Form2?

Dzięki za wskazówki z góry :)

0

przekaż do form2 referencję do form1, zapisz w jakiejś zmiennej prywatnej i korzystaj z niej.

0

Nie za bardzo rozumiem co mam zrobić, czy mógłbyś napisać jak mam to zrobić w tym kodzie?

0

No masz dwie formy, np. frmFirst i frmSecond, konstruktor formy frmFirst:

public fmSecond Second;
void frmFirst(frmSecond second)
{
this.Second = second
}

I potem np.

frmSecond frm = new frmSecond();
frm.JakasWlasciwosc = "abc";
frmFirst frm2 = new frmFirst(frm);
MessageBox.Show(frm2.Second.JakasWlasciwosc);
0
ŁF napisał(a)

nie żartuj, kod wywołujesz, to się wykonuje. nie działa tylko tak, jak się tego spodziewasz. może więc wytłumaczysz, co konkretnie znaczy "nie wykonuje się"? że nic nie widać? to może pokaż swoją formatkę po jej stworzeniu... służy do tego metoda Show().
o to chodziło? bo jeśli tak, to następnym razem użyj google, bo to rozwiązanie znalazłem w pierwszym wyniku.

Sorki ale jak ją znalazłeś to mógłbyś tu zamieścić po to człowiek pisze bo nie wie jak to zrobić. Ludzie jak chcecie pomóc to róbcie to naprawdę. Czytam fora zagraniczne i tam jak ktoś się o coś pyta to inny odpowiada konkretnie np. kawałkiem kodu a nie nic nie znaczącymi ogólnikami.

0
pytanie napisał(a)

Czytam fora zagraniczne i tam jak ktoś się o coś pyta to inny odpowiada konkretnie np. kawałkiem kodu a nie nic nie znaczącymi ogólnikami.

Well, jak jest tam tak rozowo to moze spytaj sie wlasnie tam? Po co sie meczyc na jakims polskim forum.

Co do tematu. Bylo! Uzyj opcji szukaj. Sprawdz tez nastepujace linki:
http://codeguru.pl/article-742.aspx
http://codeguru.pl/article-746.aspx

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