Formatka bazowa

0

Witam,
na wstępnie dodam, że dopiero zaczynam przygodę z C# i wcześniej nie pisałem w żadnym innym języku.
Chciałbym napisać formatkę bazową na której byłaby wyświetlana lista i chciałbym żeby po niej dziedziczyły 4 inne formatki. Funkcjonowaniem niczym nie będą się różniły tyle że każda będzie wyświetlała co innego na gridzie i każda będzie posiadała inną karte.
Na formatce bazowej umieściłem DataGridView, BindingSource i kilka buttonów np. Podgląd, Dodaj, Edycja, Usuń.
DataGridView jest podpięty do BindingSource a BindingSource ma podpięty obiekt z którego sczytuje dane.

Jak z listy odpalam kartę podglądu, dodawania lub edycji to zapisuję to w ten sposób:

	private void btnDodaj_Click(object sender, EventArgs e)
        {
            FrmPersonelAdd addPersonel = new FrmPersonelAdd(dgvPersonel.CurrentRow.DataBoundItem as PersonelBE, true);
            addPersonel.Text = addPersonel.Text + " - Dodawanie";
            addPersonel.ShowDialog();
            PrzeladujDataGrid();
        }

        private void btnPopraw_Click(object sender, EventArgs e)
        {
            FrmPersonelAdd edtPersonel = new FrmPersonelAdd(dgvPersonel.CurrentRow.DataBoundItem as PersonelBE, false);
            edtPersonel.Text = edtPersonel.Text + " - Edycja";
            edtPersonel.ShowDialog();
            PrzeladujDataGrid();
        }
	private void btnPodglad_Click(object sender, EventArgs e)
        {
            FrmPersonelAdd edtPersonel = new FrmPersonelAdd(dgvPersonel.CurrentRow.DataBoundItem as PersonelBE, false, true);
            edtPersonel.Text = edtPersonel.Text + " - Podgląd";
            edtPersonel.ShowDialog();
        }

Formatka do edycji jest napisana tak:

PersonelBE _personel;
        PersonelServices _services;
        WalidacjeFunction _walidacja;
        public bool fCzyAdd;
        public bool fCzyView;
        public FrmPersonelAdd(PersonelBE aPersonel, bool aCzyAdd, bool aCzyView = false)
        {
            InitializeComponent();
            _personel = aPersonel;
            _services = new PersonelServices();
            _walidacja = new WalidacjeFunction();
            fCzyAdd = aCzyAdd;
            fCzyView = aCzyView;            
            
            // jesli nie ma dodawania to ma wpisać w textboxy dane
            if (!fCzyAdd)
            {               
                tbLogin.Text = _personel.Login.Trim();
                tbImie.Text = _personel.Imie.Trim();
                tbNazwisko.Text = _personel.Nazwisko.Trim();
                tbNrTel.Text = _personel.NrTelefonu.Trim();
                tbEMail.Text = _personel.Email.Trim();
                tbMiasto.Text = _personel.Miasto.Trim();
                tbKodPocztowy.Text = _personel.KodPocztowy;
                tbUlica.Text = _personel.Ulica;
                tbNrDomu.Text = _personel.NrDomu.Trim();
                tbNrLokalu.Text = _personel.NrLokalu.Trim();

                if (_personel.CzyKorespondencja == 1)
                {
                    cbAdresDoKor.Checked = true;
                    tbKorMiasto.Text = _personel.KorMiasto.Trim();
                    tbKorKodPocztowy.Text = _personel.KorKodPocztowy;
                    tbKorUlica.Text = _personel.KorUlica;
                    tbKorNrDomu.Text = _personel.KorNrDomu.Trim();
                    tbKorNrLokalu.Text = _personel.KorNrLokalu.Trim();
                }
                
                if (fCzyView)
                {                      
                    cbAdresDoKor.Enabled = false;
                    gbDane.Enabled = false;
                    gbAdres.Enabled = false;
                    gbAdresDoKorespondencji.Enabled = false;

                    btnOK.Visible = false;
                    btnAnuluj.Text = "OK";                    
                } // fCzyView
            } // !fCzyAdd            
        }

I nie wiem jak zrobić formatkę bazową która zawierała by gotowe metody do który przekazałbym dane potrzebne do wyświetlenia listy np. personelu czy klientów i w jaki sposób uniwersalnie napisać metody do Buton'nów Dodaj, Podgląd, Edycja.

0

Dziedziczenie:

Formatka o nazwie Pracownicy:Form ( dziedziczy po Form ), a np.

Kadry:Pracownicy

Kadry dziedziczą po formatce Pracownicy.

0

To wiem, tylko że mi chodzi jak napisać metody na formatce bazowej żeby było to uniwersalne dla np pracowników, kadr i klientów. W momencie jak klikne na formatce z listą button Podgląd to żeby mi się wywołała inna formatka dla pracowników a inna dla klientów

0

No to najlepiej klasy i w nich umieszczać metody odpowiednie dla tych person.

0

to może mi podpowiesz jak coś takiego zrobić
mam obiekty:

  • PersonelBE
  • KilentBE
  • KadraBE

oraz formatki

  • FrmPersonelAdd
  • FrmKlientAdd
  • FrmKadraAdd

Poniżej mam metode Click

private void btnDodaj_Click(object sender, EventArgs e)
{
  FrmPersonelAdd addPersonel = new FrmPersonelAdd(dgvPersonel.CurrentRow.DataBoundItem as PersonelBE, true);
  addPersonel.Text = addPersonel.Text + " - Dodawanie";
  addPersonel.ShowDialog();
  PrzeladujDataGrid();
}

i chciałbym np coś takiego

private void btnDodaj_Click(object sender, EventArgs e)
{
   PokazKarte(FrmZmienna1, zmienna2, sender) 
}

private void PokazKarte(FrmZmienna1, zmienna2, sender)
{
  string vTekst;
  if (sender.text == "Podgląd")
    vTekst = "Przeglądanie";
  else if (sender.text == "Dodaj")
    vTekst = "Dodawanie";
  else if (sender.text == "Popraw")
   vTekst = "Edytowanie";

  FrmZmienna1 addFrm = new FrmZmienna(dgvPersonel.CurrentRow.DataBoundItem as PersonelBE, true);
  addFrm.Text = addFrm.Text + " " + vTekst;
  addFrm.ShowDialog();
}

I tutaj zaczyna się problem bo nie wiem jakimi typami powinny być przekazywane zmienne oraz co zrobić z:
dgvPersonel.CurrentRow.DataBoundItem as PersonelBE
żeby można było podstawi inne obiekty tak jak:

 - dgvPersonel.CurrentRow.DataBoundItem as PersonelBE
 - dgvPersonel.CurrentRow.DataBoundItem as KlientBE
 - dgvPersonel.CurrentRow.DataBoundItem as KadraBE

P.S. Albo coś w tym stylu, nie mam jeszcze wyobraźni programisty i nie wiem jak zrobić żeby było logicznie oraz żeby był kod łatwy do rozbudowy

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