Przekazywanie listy obiektów do innej formy

0

Mam 2 formy i klasę osoba, w pierwszej tworzę listę obiektów klasy osoba, klikając przycisk otwieram formę Szukaj i usiłuję przekazać listę obiektów do formy Szukaj. W kodzie wyskakuje mi błąd niespójność dostępności. Jeżeli przekazywana lista jest typu string wszystko działa tak jak trzeba. Jak przekazać listę obiektów?
kod Form1

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace kontakty
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            List<osoba> lista = new List<osoba>();
            lista.Add(new osoba(1, "waldek"));
            lista.Add(new osoba(1, "beata"));

            Szukanie frm2 = new Szukanie(lista);
            frm2.Show();
        }
    }
}

kod formy Szukanie

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace kontakty
{
    
    public partial class Szukanie : Form
    
    {
 
        public Szukanie(List<osoba> lista)
        {
            InitializeComponent();
            List<osoba> lista3 = new List<osoba>();
            lista3 = l;
            int x = 0;
        }
    }
}

kod klasy osoba

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace kontakty
{
    class osoba
    {
        public int nr_dostawcy { get; set; }
        public string nazwa_dostawcy { get; set; }

        public osoba(int numer, string nazwa)
        {
            nr_dostawcy = numer;
            nazwa_dostawcy = nazwa;
        }
    }
}
0

W klasie Szukanie deklarujesz (może nawet być private) zmienną typu List<osoba>, czyli:

public partial class Szukanie : Form

    {
       private List<osoba> osoby;

        public Szukanie(List<osoba> lista)
        {
            InitializeComponent();
            osoby = lista;
        }
    }

Albo nie rozumiem, z czym masz problem.

0

Dostaję taki komunikat:
error CS0051: Niespójność dostępności: typ parametru „List<osoba>” jest mniej dostępny niż metoda „Szukanie.Szukanie(List<osoba>)”

w VisualStudio mam podkreślone na czerwono Szukanie w linii
public Szukanie(List<osoba> lista)

1

A jakbyś zrobił klasę osoba jako publiczna?

0

To powinno pomóc:

 public class osoba
    {
        public int nr_dostawcy { get; set; }
        public string nazwa_dostawcy { get; set; }

        public osoba(int numer, string nazwa)
        {
            nr_dostawcy = numer;
            nazwa_dostawcy = nazwa;
        }
    }

czyli dodaj public przed class osoba.

0

O to chodziło, działa :)
Dzięki :)

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