Использование делегата для заполнения списка - PullRequest
0 голосов
/ 14 апреля 2010

Я играл с делегатами, которые пытались учиться, и столкнулся с одной маленькой проблемой, надеюсь, вы поможете мне.

class myClass
{
   OtherClass otherClass = new OtherClass(); // Needs Parameter
   otherClass.SendSomeText(myString);
}

class OtherClass
{
   public delegate void TextToBox(string s);

   TextToBox textToBox;

   public OtherClass(TextToBox ttb)  // ***Problem***
   {
       textToBox = ttb;
   }

   public void SendSomeText(string foo)
   {
       textToBox(foo);
   }
}

форма:

public partial class MainForm : Form
   {
   OtherClass otherClass;

   public MainForm()
   {
       InitializeComponent();
       otherClass = new OtherClass(this.TextToBox);
   }

   public void TextToBox(string aString)
   {
       listBox1.Items.Add(aString);
   }

}

Очевидно, что это не компилируется, потому что конструктор OtherClass ищет TextToBox в качестве параметра. Как бы вы порекомендовали обойти эту проблему, чтобы я мог получить объект из myClass в текстовое поле в форме?

1 Ответ

2 голосов
/ 14 апреля 2010

Вы можете изменить OtherClass на что-то вроде

class OtherClass 
{ 
    public delegate void TextToBox(string s); 

    TextToBox textToBox; 

    public OtherClass() 
    { 
    } 
    public OtherClass(TextToBox ttb)  // ***Problem***  
    { 
        textToBox = ttb; 
    } 

    public void SendSomeText(string foo) 
    { 
        if (textToBox != null) 
            textToBox(foo); 
    } 
} 

Но я не совсем уверен, что вы хотите достичь с

class myClass 
{ 
   OtherClass otherClass = new OtherClass(); // Needs Parameter 
   otherClass.SendSomeText(myString); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...