C# Windows Forms, Button trigger.
Tjabba!
Behöver hjälp med att få en viss kod att köras när användaren trycker på en knapp i formen.
Problemet är att jag inte kan skicka mina metoder i själva BtnCheckUser_click utan måste lösa det på annat vis då datan jag tar emot och behandlar sker i en TCP läsare.
Det jag vill lösa är att få ut min validUser.ToString() i en textbox från SplitNosData metoden NÄR en användare klickar på en knapp i programmet. Eller på annat sättt. Tack!
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
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 Guldkortet3
{
public partial class TcpAsyncServerForm : Form
{
private int port = 12345;
private TcpClient client;
private TcpListener listener;
bool button;
int counter;
User user;
List<User> userData;
ValidUser validUser;
List<ValidUser> validUserList;
public TcpAsyncServerForm()
{
InitializeComponent();
StreamReaderUserData();
StreamReaderCardData();
}
private void BtnStartServer_Click(object sender, EventArgs e)
{
try
{
BtnStartServer.Enabled = false;
StartListener();
}
catch (Exception error)
{
MessageBox.Show(error.Message, this.Text);
return;
}
}
private async void StartListener()
{
try
{
listener = new TcpListener(IPAddress.Any, port);
listener.Start();
client = await listener.AcceptTcpClientAsync();
}
catch (Exception error)
{
MessageBox.Show(error.Message, this.Text);
return;
}
StartReader(client);
}
private async void StartReader(TcpClient c)
{
string nosData;
byte[] inputData;
int n;
try
{
inputData = new byte[1024];
n = await c.GetStream().ReadAsync(inputData, 0, inputData.Length);
nosData = Encoding.Unicode.GetString(inputData, 0, n);
}
catch (Exception error)
{
MessageBox.Show(error.Message, this.Text);
return;
}
StartReader(c);
TbUserToString.Clear();
SplitNosData(nosData);
}
public void SplitNosData(string nosData)
{
counter = 0;
string[] vector;
List<string[]> vectorList = new List<string[]>();
validUserList = new List<ValidUser>();
userData = new List<User>();
// Datan från NOS_export, splittas till två strängar och läggs i en vektorlista.
vector = nosData.Split(new string[] { "-" }, StringSplitOptions.None);
vectorList.Add(vector);
// FÖR VARJE data i listan
// SÅ tilldelas ett indexvärde till en nyskapad user från NOS-datan.
// Denna data ska jämföras med en existerande = ValidUser lista.
LbNosData.Items.Clear();
foreach (string[] vs in vectorList)
{
user = new User();
userData.Add(user);
user.AnvändarNummer = vs[0];
user.KortNummer = vs[1];
LbNosData.Items.AddRange(vs);
}
// OM det finns en användare i kundlistan med samma A-serienummer som skickas från NOS_export.
// SÅ skapas det en ny användare.
// ANNARS meddelas att ingen användare hittats.
foreach (string[] sUser in StreamReaderUserData())
{
foreach (User u in userData)
{
if (u.AnvändarNummer == sUser[0])
{
validUser = new ValidUser();
validUserList.Add(validUser);
validUser.AnvändarNummer = sUser[0];
validUser.Namn = sUser[1];
validUser.Ort = sUser[2];
TbUserToString.Clear();
TbUserToString.AppendText(validUser.ToString());
if (u.KortNummer == "K999999999")
{
if (u.AnvändarNummer == sUser[0])
{
TbUserToString.Clear();
TbUserToString.AppendText(sUser[1] + " (" + sUser[0] + ")" + "\r\nDu har tyvärr ett felaktigt kortnummer.");
}
}
}
else if (u.AnvändarNummer == "A9999999" && u.KortNummer == "K999999999")
{
TbUserToString.Clear();
TbUserToString.AppendText("Tyvärr finns ingen användare.");
}
else if (u.AnvändarNummer == "A9999999" && u.KortNummer != "K999999999")
{
TbUserToString.Clear();
TbUserToString.AppendText("Tyvärr finns ingen användare.");
}
}
}
// OM en användare har fel anv nummer.
try
{
if (user.AnvändarNummer == "A9999999")
{
MessageBox.Show("Användaren finns inte i databasen", Text.Insert(19, "-error 404"));
}
}
catch (Exception)
{
return;
}
}
public List<string[]> StreamReaderUserData()
{
string item = "";
string[] vector;
List<string> userDataSaver = new List<string>();
List<string[]> userVector = new List<string[]>();
StreamReader reader = new StreamReader("kundlista.txt", Encoding.Default, true);
if (File.Exists("kundlista.txt"))
{
while ((item = reader.ReadLine()) != null)
{
userDataSaver.Add(item);
}
foreach (string s in userDataSaver)
{
vector = s.Split(new string[] { "###" }, StringSplitOptions.None);
userVector.Add(vector);
}
}
reader.Close();
return userVector;
}
public List<string[]> StreamReaderCardData()
{
string item = "";
string[] vector;
List<string> cardSaver = new List<string>();
List<string[]> cardVector = new List<string[]>();
StreamReader reader = new StreamReader("kortlista.txt", Encoding.Default, true);
if (File.Exists("kortlista.txt"))
{
while ((item = reader.ReadLine()) != null)
{
cardSaver.Add(item);
}
foreach (string s in cardSaver)
{
vector = s.Split(new string[] { "###" }, StringSplitOptions.None);
cardVector.Add(vector);
}
}
reader.Close();
return cardVector;
}
private void BtnCheckUser_Click(object sender, EventArgs e)
{
BtnCheckUser.Enabled = false;
button = true;
}
public void ButtonEnabled()
{
BtnCheckUser.Enabled = true;
button = false;
}
}
public class User
{
public string AnvändarNummer { get; set; }
public string KortNummer { get; set; }
public override string ToString()
{
return "Anv: " + AnvändarNummer + " Kort nr: " + KortNummer;
}
}
public class ValidUser : User
{
public string Namn { get; set; }
public string Ort { get; set; }
public string Guldkort { get; set; }
public override string ToString()
{
return "Grattis " + Namn + ". Du vann det exklusiva " + Guldkort +
" kortet. \r\nDu kan hämta det i din lokala spelbutik i " + Ort;
}
}
}