How can i update label from another class, i have seen many answer, but not function for my example. here is my code:
class Form1: look like this:
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 login
{
public partial class Form1 : Form
{
public static Form1 Instance { get; private set; }
public Form1()
{
InitializeComponent();
Instance = this;
MediaEvent device = new MediaEvent();
}
private void button2_Click(object sender, EventArgs e)
{
MediaEvent msg = new MediaEvent();
string u = textBox1.Text;
string p = textBox2.Text;
msg.checkLogin(u, p);
label2.Text = msg.getMessage();
}
public void TextStatus(string aString)
{
// Place messages in Main Display list box window
this.lstatus.Text = aString;
}
public void TextToBox(string aString)
{
// Place messages in Main Display list box window
this.listBox1.Items.Insert(0, aString);
}
public void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}
Class MediaEvent look like this:
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;
using System.Windows.Forms;
namespace login
{
class MediaEvent: IDisposable
{
public string MyMsg { get; set; }
public string State { get; set; }
public string getMessage()
{
return MyMsg;
}
public void checkLogin(string u, string p)
{
if((u != "user") && (p != "password"))
{
MyMsg +="Id or password no correct, please try again.";
}
}
Form1 MainForm;
private ManagementEventWatcher watcherAttach;
private ManagementEventWatcher watcherRemove;
public MediaEvent()
{
if (watcherAttach == null)
{
watcherAttach = new ManagementEventWatcher();
watcherAttach.Query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2");
watcherAttach.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
//Form1.Instance.TextStatus("On");
watcherAttach.Start();
}
if (watcherRemove == null)
{
watcherRemove = new ManagementEventWatcher();
watcherRemove.Query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 3");
watcherRemove.EventArrived += new EventArrivedEventHandler(watcher_EventRemoved);
//Form1.Instance.TextStatus("Off");
watcherRemove.Start();
}
}
/// <summary>
/// Used to dispose of the USB device watchers when the USBControl class is disposed of.
/// </summary>
public void Dispose()
{
if (watcherAttach != null)
{
watcherAttach.Stop();
watcherAttach.Dispose();
watcherAttach = null;
}
if(watcherRemove != null)
{
watcherRemove.Stop();
watcherRemove.Dispose();
watcherRemove = null;
}
}
void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
Form1.Instance.TextStatus("On");
//MessageBox.Show("On");
}
void watcher_EventRemoved(object sender, EventArrivedEventArgs e)
{
Form1.Instance.TextStatus("Off");
//MessageBox.Show("off");
}
~MediaEvent()
{
this.Dispose();
}
}
}
This is the full code more clearly. i need your help