我试图编写一个类的方法,它应该将一个对象(例如textbox或label)作为参数,并且每当它需要向用户显示消息时,它就使用该对象来显示消息。
由于该类将在其他程序中使用,因此它应该是可移植的,并且应该实现对任何基于文本的对象的功能,如标签或文本框等。
考虑以下方法:
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
}是否有任何方法来实现这一点,或者这种编程不适合于可移植类?
发布于 2015-01-31 10:10:58
我会选择另一种方法。我将使用委托传递文本接收对象,而不是传入文本:
public void TcpEndPoint(string IP, Action<string> setText)
{
setText(message);
}然后,可以使用lambda表达式调用它:
TcpEndPoint(someIp, t => yourTextBox.Text = t);发布于 2015-01-31 07:29:27
你称之为text-based object的东西是我假设Windows.Forms.Control。该类是windows窗体中所有可视对象的基类。所以您可以使用这个类和get,它是Text属性。
public void TcpEndPoint(string IP, Control _object)
{
...
MessageBox.Show(_object.Text);/// or in any other way you like.
...
}更新:
如果要set对象的Text属性并在 it上显示消息,只需按如下方式使用:
public void TcpEndPoint(string IP, string message, Control _object)
{
...
_object.Text = message; /// or in any other way you like.
...
}https://stackoverflow.com/questions/28249286
复制相似问题