Her er et lille stykke kode, der opretter en StreamReader
og en TcpClient:
public Form1()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
StreamReader SR = new StreamReader(@"C:\\test.txt");
TcpClient TC = new TcpClient("server.com", 80);
}
private void button2_Click(object sender, EventArgs e)
{
}
Nu er mit spørgsmål så.. Hvordan kan jeg få adgang til SR eller TC's
funktioner - f.eks. TC.Connect() - i button2_Click event-handleren?
Jeg synes nemlig, at det ville være meget praktisk hvis man kunne
oprette TcpClient'en i public Form1(), så den er klar så snart man
åbner programmet, og så senere bruge TC.Connect() i en button_Click event.
Og ja, jeg er godt klar over, at man bare kan oprette dem udenfor en funktion,
altså fx her:
public void button1_Click(object sender, EventArgs e)
{
}
TcpClient TC = new TcpClient("server.com", 80);
private void button2_Click(object sender, EventArgs e)
{
}
Dette er dog ikke altid en god løsning, hvis TcpClient'en f.eks.
skal bruge en eller flere parametre fra brugeren. Men så kunne man
jo selvfølgelig bare gøre sådan (udenfor en funktion, eventhandler etc.):
TcpClient TC;
og så skrive følgende inde i button1_Click:
TC = new TcpClient(txtHostname.Text, txtPort.Text);
Men, men, men. Hvis man så skal bruge fx en StreamWriter, til at sende kommandoer
til serveren med, så har man et problem. StreamWriteren SKAL oprettes inde i
button1_Click, og så kan man ikke få adgang til den fra andre
button_Click events (eller andre funktioner for den sags skyld).
Hvordan gør man lige det?