Utilisation et instance d’une classe sur deux formulaires

Je me bats pour comprendre ce qui suit. J’ai actuellement trois formes, ma principale et une classe principale.

public partial class frmMain : Form { public frmMain() { InitializeComponent(); } } public partial class frmSuppliers : Form { public frmSuppliers() { InitializeComponent(); } } public partial class frmCustomers : Form { public frmCustomers() { InitializeComponent(); } } 

Dans mon programme principal j’ai:

  public class Program { public StockControl StockSystem = new StockControl("The Book Shop", 20); } 

Je souhaite pouvoir accéder aux méthodes de StockControl dans frmSuppliers et frmMain.

Je sais que c’est peut-être une question N00b – mais cela m’a énervé toute la journée!

Vous devez le transmettre aux autres formulaires en tant que paramètre constructeur, puis le stocker dans un champ privé.

déclarer statique

 public static StockControl StockSystem = new StockControl("The Book Shop", 20); 

et utiliser comme

 Program.StockSystem 

Vous devez append un champ de type StockControl à chacun de vos formulaires et le rendre public, ou y append un getter / setter. Cela signifie qu’il faut append les lignes suivantes à chacun de vos formulaires:

 private StockControl _stockCtrl; public StockControl StockCtrl { get { return _stockCtrl; } set { _stockCtrl = value; } } 

Dans le code de chaque formulaire, vous pouvez accéder à votre StockControl. Mais ce sera vide (c’est-à-dire nul) si vous ne lui atsortingbuez pas quelque chose. C’est quelque chose que je ferais avant d’ouvrir le formulaire. Si vous êtes dans votre méthode principale:

 frmSuppliers frmToOpen = new frmSuppliers(); frmSuppliers.StockCtrl = StockSystem; frmSuppliers.Show();