C# 对象发送器 - 获取从中调用它的方法
本文关键字:调用 方法 获取 对象 | 更新日期: 2023-09-27 18:05:51
我有这些方法:
private void button_Click(object sender, EventArgs e)
{
//Changes the Text in the RichBox, EXAMPLE:
richtTextBox.Text = "Now Changed and calling Method richTextBox_TextChanged";
}
和
private void richTextBox_TextChanged(object sender, EventArgs e)
{
//Wants something like that
if(called from button_click)
{
//DO SOMETHING
}
else
{
//DO SOMETHING
}
}
我如何处理这个问题,知道它是否是从Button_click调用的?我是否必须使用对象发送器来获取信息?但是怎么做呢?
希望你们能帮助我
只需使用一个标志:
private bool _isInButtonClick;
private void button_Click(object sender, EventArgs e)
{
try
{
_isInButtonClick = true;
//Changes the Text in the RichBox, EXAMPLE:
richtTextBox.Text = "Now Changed and calling Method richTextBox_TextChanged";
}
finally
{
_isInButtonClick = false;
}
}
private void richTextBox_TextChanged(object sender, EventArgs e)
{
if(_isInButtonClick)
{
//DO SOMETHING
}
else
{
//DO SOMETHING
}
}
private void richTextBox_TextChanged(object sender, EventArgs e)
这里sender
的是 richTextBox,而不是更改文本的按钮。
您可以进入堆栈跟踪以发现按钮单击是否在调用堆栈上,但这太过分了(例如使用核弹破解核桃(。
向窗体添加一个标志 (bool(,在按钮单击中将其设置为 true,并在 TextChanged 事件中检查它,然后在按钮单击结束时,再次将其设置为 false。
如果您这样做,我建议将此signal
逻辑包装在实现 IDispose 的类中,并在using
语句中使用它。
也就是说,您确定需要此功能吗?