C# 获取控制如何触发事件 winforms
C# Get Control how fired the event winforms
我有一个问题:
我有两个按钮和 OnClick,我在 XmlHelper Class 中调用了一个 CreateTelegram() 函数。
该函数创建一个 Xml 并将其发送到服务器。
如果服务器响应 (xml),则触发一个事件。
现在,如果 XML 元素 returnCode = 0,我会将文本字段背景色 属性 编辑为绿色。
如何获取触发事件的控件(Button1 或 Button2)
这里是我的代码:
按钮 1:
private void btnCheckId_Click(object sender, EventArgs e)
{
xmlHelper.CreateTelegram(configSettings, txtIdCheck.Text);
}
按钮 2:
private void btnCheckId2_Click(object sender, EventArgs e)
{
xmlHelper.CreateTelegram(configSettings, txtIdCheck2.Text);
}
Xml帮手:
public void CreateTelegram(ConfigSettings configSettings, string Identifier)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
settings.CloseOutput = true;
//settings.OmitXmlDeclaration = true;
using (StringWriter sw = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(sw, settings))
{
xml Stuff..
}
string partTelegram = sw.ToString();
SendTelegramm(partTelegram , configSettings.serverAddress, configSettings.serverPort);
}
}
活动订阅:
_connector.DataReceived += new EventHandler<SocketEventArgs<byte[]>>(Connector_DataReceived);
Connector_DataReceived函数
private void Connector_DataReceived(object sender, SocketEventArgs<byte[]> e)
{
if (e == null || e.Repository == null)
return;
if (_currentMsg != null)
{
{
try
{
_currentMsg.ResponseMessage = new XmlMessage(EvaluateReceivedData(e.Repository), false);
}
catch (Exception ex)
{
ShowTextThreadProc(ex.Message + Environment.NewLine + ex.StackTrace);
}
return;
}
}
EvaluateReceivedData(e.Repository);
}
private string EvaluateReceivedData(byte[] data)
{
int offset = (int)this._connector.Offset;
if (data == null || data.Length <= offset)
return null;
string msg = Encoding.ASCII.GetString(data, offset, data.Length - offset);
DisplayMessage(msg);
return msg;
}
private void DisplayReceivedData(string text)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(new StringReader(text));
int returnCode = Convert.ToInt32(doc.SelectSingleNode("/root/event/result/@returnCode")?.Value ?? "-1");
Debug.WriteLine(returnCode );
if (returnCode == 0)
{
...GET THE SENDER and edit the BackColor...
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Disconnect();
}
}
您可以转换 sender
参数:
private void btnCheckId_Click(object sender, EventArgs e)
{
Button clickedButton = (Button)sender;
if (clickedButton == Button1)
{ ... }
}
我有一个问题: 我有两个按钮和 OnClick,我在 XmlHelper Class 中调用了一个 CreateTelegram() 函数。 该函数创建一个 Xml 并将其发送到服务器。 如果服务器响应 (xml),则触发一个事件。 现在,如果 XML 元素 returnCode = 0,我会将文本字段背景色 属性 编辑为绿色。
如何获取触发事件的控件(Button1 或 Button2)
这里是我的代码:
按钮 1:
private void btnCheckId_Click(object sender, EventArgs e)
{
xmlHelper.CreateTelegram(configSettings, txtIdCheck.Text);
}
按钮 2:
private void btnCheckId2_Click(object sender, EventArgs e)
{
xmlHelper.CreateTelegram(configSettings, txtIdCheck2.Text);
}
Xml帮手:
public void CreateTelegram(ConfigSettings configSettings, string Identifier)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
settings.CloseOutput = true;
//settings.OmitXmlDeclaration = true;
using (StringWriter sw = new StringWriter())
{
using (XmlWriter writer = XmlWriter.Create(sw, settings))
{
xml Stuff..
}
string partTelegram = sw.ToString();
SendTelegramm(partTelegram , configSettings.serverAddress, configSettings.serverPort);
}
}
活动订阅:
_connector.DataReceived += new EventHandler<SocketEventArgs<byte[]>>(Connector_DataReceived);
Connector_DataReceived函数
private void Connector_DataReceived(object sender, SocketEventArgs<byte[]> e)
{
if (e == null || e.Repository == null)
return;
if (_currentMsg != null)
{
{
try
{
_currentMsg.ResponseMessage = new XmlMessage(EvaluateReceivedData(e.Repository), false);
}
catch (Exception ex)
{
ShowTextThreadProc(ex.Message + Environment.NewLine + ex.StackTrace);
}
return;
}
}
EvaluateReceivedData(e.Repository);
}
private string EvaluateReceivedData(byte[] data)
{
int offset = (int)this._connector.Offset;
if (data == null || data.Length <= offset)
return null;
string msg = Encoding.ASCII.GetString(data, offset, data.Length - offset);
DisplayMessage(msg);
return msg;
}
private void DisplayReceivedData(string text)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(new StringReader(text));
int returnCode = Convert.ToInt32(doc.SelectSingleNode("/root/event/result/@returnCode")?.Value ?? "-1");
Debug.WriteLine(returnCode );
if (returnCode == 0)
{
...GET THE SENDER and edit the BackColor...
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
Disconnect();
}
}
您可以转换 sender
参数:
private void btnCheckId_Click(object sender, EventArgs e)
{
Button clickedButton = (Button)sender;
if (clickedButton == Button1)
{ ... }
}