|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Piacenza d'Adige (PD)
Messaggi: 651
|
[C#] Passaggio parametri fra classi diverse
Salve a tutti, continua la mia disperata avventura con il C#, e c'è una cosa(fra le tante) che non riesco a capire.
nel mio progetto, in cui ho una form e un pulsante, ho una funzione (scusate arrivo dal VB) "mostra" che apre un MessageBox mostrando una stringa che dovrei passare dal pulsante: Codice:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace test1
{
public class Program
{
/// <summary>
/// Punto di ingresso principale dell'applicazione.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
public void mostra(string messaggio)
{
MessageBox.Show(messaggio);
}
}
}
questo è il codice della form: Codice:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace test1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
mostra("Ciao");
}
}
}
Mi spiegate perchè la funzione "mostra" nella classe Form1 non viene vista, ma la cosa funziona solo se sposto l'evento nella stessa classe della funzione stessa, cioè "Program"? Come devo fare perchè una "funzione" sia visibile a tutte le classi del mio progetto? Grazie per la pazienza Ultima modifica di R1((ky : 27-10-2008 alle 13:51. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ciao
Prima di tutto, ti consiglierei di non aggiungere nulla al file Program che ti viene creato di base. Concettualmente ogni file (classe) dovrebbe avere un preciso ambito/scopo. Per fare ciò che vuoi, ti suggerirei di procedere così: Codice:
//creo una classe che sarà la mia contenitrice di messaggi
public class MostraMessaggi
{
private string messaggio;
public void Mostra(string messaggio)
{
this.messaggio = messaggio;
MessageBox.Show(messaggio);
}
}
Codice:
//dal form:
private void button1_Click(object sender, EventArgs e)
{
MostraMessaggi m = new MostraMessaggi();
m.Mostra("ciao");
}
Codice:
//esempio 2
public class MostraMessaggi
{
private string messaggio;
public MostraMessaggi
{
this.messaggio = messaggio;
MessageBox.Show(messaggio);
}
}
//e dal form
private void button1_Click(object sender, EventArgs e)
{
MostraMessaggi m = new MostraMessaggi("ciao");
}
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
Ultima modifica di RaouL_BennetH : 27-10-2008 alle 14:07. |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Se il metodo non è statico prima di accedervi devi istanziare un oggetto, nel tuo caso di tipo Program. Codice:
public partial class Form1 : Form
{
private Program program = new Program();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
program.mostra("Ciao");
}
}
Quote:
|
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:15.



















