[ AMD guy @ 05.05.2009. 15:42 ] @
Imam klasu UcitajAutomobil koja uzima podatke iz baze i prikazuje ih u Lisview-u. Problem je u tome sto kada iz druge klase hocu da nasledim UcitajAutomobil daje mi glesku Dispose(bool)': no suitable method found to override. Glavna mi nasledjuje iz UcitajAutomobil.
UcitajAutomobil.cs
Code:
public class UcitajAutomobil
    {
        public void UcitajUListview()
        {
            listViewRaspolozivi.Items.Clear();
            DataSet ds = new DataSet();
            string upit = "Select * from Vozilo";

            using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.RentCarConnStr))
            {
                SqlDataAdapter da = new SqlDataAdapter(upit, conn);
                da.Fill(ds);
            }

            DataTable tblVozilo = ds.Tables[0];
            foreach (DataRow dr in tblVozilo.Rows)
            {
                ListViewItem lvi = new ListViewItem(dr["ID_vozila"].ToString());

                lvi.SubItems.Add(dr["Marka"].ToString());
                lvi.SubItems.Add(dr["Boja"].ToString());
                lvi.SubItems.Add(dr["Godiste"].ToString());
                lvi.SubItems.Add(dr["Registracija"].ToString());

                listViewRaspolozivi.Items.Add(lvi);
            }

            if (listViewRaspolozivi.SelectedItems.Count == 0)
            {
                return;
            }

            string query = "Select * from Vozilo Where ID_vozila = '" +
                listViewRaspolozivi.SelectedItems[0].Tag.ToString() + "'";

            using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.RentCarConnStr))
            {
                SqlCommand cmd = new SqlCommand(query, conn);
                conn.Open();

                SqlDataReader dr = cmd.ExecuteReader();
                dr.Read();

                Automobil car = new Automobil();
                car.ID = (int)dr[0];
                car.Marka = dr[1].ToString();
                car.Boja = (string)dr[2];
                car.Godiste = (string)dr[3];
                car.Registracija = (string)dr[4];

                dr.Close();

                conn.Close();

                voziloBindingSource.DataSource = car;

            }
        }
    }

Glavna.cs
Code:
 public partial class Glavna : UcitajAutomobil
    {
        public Glavna()
        {
            InitializeComponent();
        }

        private void ucitajToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UcitajAutomobil ucitaj = new UcitajAutomobil();
            ucitaj.UcitajUListview();
        }
    }
[ marko1981 @ 05.05.2009. 16:03 ] @
Rekao bih da ti je pristup u startu pogrešan.

Jesu li u pitanju klase koje nasledjuju Form klasu?

Da li bi napisao šta u stvari želiš da uradiš, a što te je navelo da primenjuješ nasledjivanje?
[ AMD guy @ 05.05.2009. 16:16 ] @
Koristim ListView i imam dve forme Ucitaj i Obrisi. Ova klasa UcitajAutomobil ima jednu metodu UcitajUListview() i puni listview prve i druge forme, pa sam hteo da iskoristim nasledjivanje kako bi popunio obe forme.
Lakse bi bilo kad bih isti kod koristio u Ucitaj formi i Obrisi formi, ali ja to necu. Pocetnik sam u c# i ovo mi je rad za prakticnu nastavu u mojoj skoli.

Moje pitanje je: kako pomocu nasledjivanja da popunim te dve forme.

Ucitaj i Obrisi treba da nasledjuju UcitajAutomobil klasu.

[Ovu poruku je menjao AMD guy dana 05.05.2009. u 17:26 GMT+1]
[ AMD guy @ 05.05.2009. 19:43 ] @
Jel zna neko kako se to radi?
[ Shevchenko @ 05.05.2009. 22:07 ] @
Pa definitivno ne ovako :)

Vidis ti nasledjujes "UcitajAutomobil", koja ima metodu "UcitajUListview" (koja bi trebala biti protected) tako da nema potrebe za ovim :
Code:

            UcitajAutomobil ucitaj = new UcitajAutomobil();
            ucitaj.UcitajUListview();


Iz razloga sto "Glavna" nasledjuje vec tu metodu :)
Dakle ovako nekako:

Code:

            Glavna.UcitajUListview();


U potpunosti se slazem sa marko1981 sto se tice pristupa, da je veoma los.

Bolji primer bi bio:

Code:

    public class MotornoVozilo
    {
     //neki kod
    }
    public class Automobil : MotornoVozilo
    {
     //neki kod     
    }
    public class Kamion: MotornoVozilo
    {
     //neki kod     
    }

 public partial class Glavna: Form
    {
        public Glavna()
        {
            InitializeComponent();
        }

        private void ucitajToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Automobil car= new Automobil ();
            Listview.Datasource = car.GetAllCars();
        }
    }
[ AMD guy @ 05.05.2009. 23:51 ] @
Znaci klasa motornoVozilo bi u mom slucaju bila UcitajAutomobil sa tom metodom UcitajUListview() a Automobil i Kamion bi bili one dve forme Ucitaj i Obrisi i onda na kraju uradim ovo
Code:
private void ucitajToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Automobil car= new Automobil ();
            Listview.Datasource = car.GetAllCars();
        }
.