首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将任何可以显示文本的对象传递给C#方法

如何将任何可以显示文本的对象传递给C#方法
EN

Stack Overflow用户
提问于 2015-01-31 07:22:08
回答 2查看 134关注 0票数 2

我试图编写一个类的方法,它应该将一个对象(例如textbox或label)作为参数,并且每当它需要向用户显示消息时,它就使用该对象来显示消息。

由于该类将在其他程序中使用,因此它应该是可移植的,并且应该实现对任何基于文本的对象的功能,如标签或文本框等。

考虑以下方法:

代码语言:javascript
复制
public void TcpEndPoint(string IP,/* a text-based object */)
{ 

    // There's a need to show a message 
    // to the user by the text-based object

}

是否有任何方法来实现这一点,或者这种编程不适合于可移植类?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-31 10:10:58

我会选择另一种方法。我将使用委托传递文本接收对象,而不是传入文本:

代码语言:javascript
复制
public void TcpEndPoint(string IP, Action<string> setText)
{
    setText(message);
}

然后,可以使用lambda表达式调用它:

代码语言:javascript
复制
TcpEndPoint(someIp, t => yourTextBox.Text = t);
票数 3
EN

Stack Overflow用户

发布于 2015-01-31 07:29:27

你称之为text-based object的东西是我假设Windows.Forms.Control。该类是windows窗体中所有可视对象的基类。所以您可以使用这个类和get,它是Text属性。

代码语言:javascript
复制
public void TcpEndPoint(string IP, Control _object)
{ 
    ...
    MessageBox.Show(_object.Text);/// or in any other way you like.
    ...
}

更新:

如果要set对象的Text属性并在 it上显示消息,只需按如下方式使用:

代码语言:javascript
复制
public void TcpEndPoint(string IP, string message, Control _object)
{ 
    ...
    _object.Text = message; /// or in any other way you like.
    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28249286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档