Jak przekazać parametr do drugiej formy?

Odpowiedz Nowy wątek
2006-12-01 08:11
0

Mam forme pierwsza na ktorej mam DataGridView i w tabeli mam 4 pola tekstowe i jedno pole IMAGE.
Chce zrobic tak ze po kliknieciu tylko na zdjecie otwiera sie nowa forma z powiekszana fotka.
Mam np 4 pola tekstowe: L.p. , Nazwa, Producent, Kod jak wychwycic zdarzenie poleghajace na kliknieciu akurat w kolumnie Image i przeslac kod do drugiej formy?

Pozostało 580 znaków

2006-12-01 21:00
0

O ile zrozumialem dobrze, to prawdopodobnie pomoze Ci obsluga zdarzenia CellMouseClick, gdzie w danych zdarzenia mozesz sprawdzic np. index kliknietej kolumny (rozpoznasz, czy to ta z image'ami, czy nie).


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-12-02 17:10
T72
0

A jak chodziło Ci o przekazywanie obrazka do tej drugiej formy to możesz np w formie drugiej zrobić zmienną publiczną np public string obrazek; i wtedy jak ją odpalasz robisz tak:
Form2 forma = new Form2();
forma.obrazek = nazwa_pliku;
forma.Show();

i w jakieś tam funkcji ( :) ) na Forma2 przy jej tworzeniu wczytujesz obrazek z podanej ścierzki.

Pozostało 580 znaków

2006-12-04 12:06
0
johny_bravo napisał(a)

O ile zrozumialem dobrze, to prawdopodobnie pomoze Ci obsluga zdarzenia CellMouseClick, gdzie w danych zdarzenia mozesz sprawdzic np. index kliknietej kolumny (rozpoznasz, czy to ta z image'ami, czy nie).

Ok mam cos takiego:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 2)
            {
                DataGridViewTextBoxCell cell = (DataGridViewTextBoxCell)
        dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];

                MessageBox.Show(Convert.ToString(cell.Value));

                Form2 Form2 = new Form2();
                Form2.Show();
            }

        }

I teraz powiedzmy ze chce odpalic cos na formie 2 np zwykly textbox ktory bedzie zawieral cell.value jak to przekazac?

Pozostało 580 znaków

2006-12-04 13:05
0

Albo tak jak T72 napisal, albo tworzysz konstruktor Form2(int numer) i tworzysz forme przez ten konstruktor, podajac w parametrach cell.value.


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-12-04 13:24
0
johny_bravo napisał(a)

Albo tak jak T72 napisal, albo tworzysz konstruktor Form2(int numer) i tworzysz forme przez ten konstruktor, podajac w parametrach cell.value.

No kumam ale jak napisal T72 to zakladam ze nazwa_pliku jest zdefioniowana w formie nr 1 i teraz jak ja uwidziec w formie 2.

Pozostało 580 znaków

2006-12-04 13:52
0

No nie kumasz najwyrazniej. Tworzysz sobie w Form2 skladowa np. int numer; albo Image obrazek. Jezeli to public, to mozesz zrobic tak jak T72, czyli podstawic po prostu po stworzeniu obiektu Form2. Ja osobiscie zrobilbym private/protected i w konstruktorze przekazal wartosc i przypisal do odpowiedniej skladowej. Form2 oczywiscie widzi ta skladowa i jej wartosc, bo to przeciez skladowa tej klasy jest ;)


You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-12-04 14:37
0
johny_bravo napisał(a)

No nie kumasz najwyrazniej. Tworzysz sobie w Form2 skladowa np. int numer; albo Image obrazek. Jezeli to public, to mozesz zrobic tak jak T72, czyli podstawic po prostu po stworzeniu obiektu Form2. Ja osobiscie zrobilbym private/protected i w konstruktorze przekazal wartosc i przypisal do odpowiedniej skladowej. Form2 oczywiscie widzi ta skladowa i jej wartosc, bo to przeciez skladowa tej klasy jest ;)

tzn teorie kumam ale praktycznie jak to zapisac (konstruktor) nie bardzo moge prosic o pare linijek przykladu ?

Pozostało 580 znaków

2006-12-04 16:05
0

Klasycznie po utworzeniu formatki wyglada to tak:


public partial class Form1
{
public Form1()
{
InitializeComponent();
}
}


poniewaz to zwykla klasa, jak kazda inna, to mozesz zrobic tak:

<code class="c#">
public partial class Form1
{
  private string MojePrywatnePole;

  public Form1(string wartosc_przekazana)
 {
   InitializeComponent();
   MojePrywatnePole = wartosc_przekazana;
 }

  //obsluga zdarzenia, jakas metoda, itp
  {
     MessageBox.Show(MojePrywatnePole);
  }
}

You need to learn how to walk
before you can run

Pozostało 580 znaków

2006-12-05 08:40
0

Fajnie dzieki trybi ale natchnalem sie jeszcze na pole Image w Datagridview, bo teraz przeslalem sobie kod produktu jako tekst i laduje fote z dysku. Ale gdybym musial przeslac obrazek z pola Image Datagridview to mialbym:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
   {
     if (e.ColumnIndex == 1)
        {
         DataGridViewImageCell cell = (DataGridViewImageCell)dataGridView1.Rows[e.RowIndex].Cells   [e.ColumnIndex];
         dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];           
         Form2 Form2 = new Form2(Convert.ToString(cell.Value)); 
         Form2.Show();
         }

    }

I teraz jako parametr Form2 co nalezy podac? , gdzie teraz w cell jest fotka ?
Czyli majac teraz drugą forme i robie np:

PictureBox1.Image = ... ? // i tutaj co ?

Dzieki za odp.

Pozostało 580 znaków

2006-12-05 08:54
0

No to tez musisz podac w parametrze w takim razie - czyli konstruktor typu Form2(int numer, Image obrazek). A fotka jest prawdopodobnie w value - jak ja tam wsadzales? ;)


You need to learn how to walk
before you can run

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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