tôi muốn có một nút mà khi nó đẩy một chuỗi mới là showen trong textboxC# 4 quan sát viên thực hiện
những gì tôi làm sai
somone thể inlight tôi tại sao doesnt mã này làm việc? ...
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public event Startdelegate StartEvent;
myButton button;
newTb[] tb;
public Form1()
{
InitializeComponent();
button = new myButton();
button.Parent = this;
button.Location = new Point(120, 0);
button.Text = "click on me!!!";
tb = new newTb[8];
for (int i = 0; i <= 80; i += 15)
{
tb[i/15] = new newTb();
tb[i/15].Parent = this;
tb[i/15].Location = new Point(i + i, i + i);
// button.Subscribe(tb[i/15]);
}
button.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
button.s = "this is clicking";
//button.Notify();
}
}
public class myButton : Button, IObservable<newTb>
{
public string s;
private List<IObserver<newTb>> observers;
public myButton()
{
observers = new List<IObserver<newTb>>();
}
public IDisposable Subscribe(IObserver<newTb> observer)
{
if (!observers.Contains(observer))
{
observers.Add(observer);
}
return new Unsubscriber(observers, observer);
}
protected void Notify(newTb tb)
{
foreach (IObserver<newTb> observer in observers)
{
observer.OnNext(tb);
}
}
#region Unsubscriber
private class Unsubscriber : IDisposable
{
private List<IObserver<newTb>> observers;
private IObserver<newTb> observer;
public Unsubscriber(List<IObserver<newTb>> observers, IObserver<newTb> observer)
{
this.observers = observers;
this.observer = observer;
}
public void Dispose()
{
if (observer != null && observers.Contains(observer))
{
observers.Remove(observer);
}
}
}
#endregion
class newTb : TextBox, IObserver<string>
{
string s;
public void OnCompleted() { }
public void OnError(Exception error) { }
public void OnNext(string value)
{
this.Text = value;
}
}
}
}
+1 Chỉ để bạn có thể có một số điểm để mở một tiền thưởng khác :-) – SKG
Nếu câu trả lời đúng, bạn nên đánh dấu câu hỏi là đã trả lời để tiền thưởng có thể được trao. –
nhưng nó không phải là một cách khác của imlpment tôi muốn implment như họ làm trong msdn trong ví dụ của tôi –