Где добавить подписку
namespace WindowsFormsApp1 { public partial class Form1 : Form { Account MyAccount = new Account(10000); subscriber Mysubscriber = new subscriber(); public Form1() { InitializeComponent(); MyAccount.TransactionMade += new TransactionHandler(Mysubscriber.SendNotification); } private void ButtonCredit(object sender, EventArgs e) { MyAccount.Credit(500); MessageBox.Show("your current balance is ", MyAccount.BalanceAmount.ToString()); } } }
namespace WindowsFormsApp1 { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } public delegate void TransactionHandler(object sender, TransactionEventArgs e); // Delegate Definition class Account { public event TransactionHandler TransactionMade; // Event Definition public int BalanceAmount; public Account(int amount) { this.BalanceAmount = amount; } public void Debit(int debitAmount) { if (debitAmount < BalanceAmount) { BalanceAmount = BalanceAmount - debitAmount; TransactionEventArgs e = new TransactionEventArgs(debitAmount, "Debited"); OnTransactionMade(e); // Debit transaction made } } public void Credit(int creditAmount) { BalanceAmount = BalanceAmount + creditAmount; TransactionEventArgs e = new TransactionEventArgs(creditAmount, "Credited"); OnTransactionMade(e); // Credit transaction made } protected virtual void OnTransactionMade(TransactionEventArgs e) { if (TransactionMade != null) { TransactionMade(this, e); // Raise the event } } } public class TransactionEventArgs : EventArgs { public int TranactionAmount { get; set; } public string TranactionType { get; set; } public TransactionEventArgs(int amt, string type) { TranactionAmount = amt; TranactionType = type; } } public class subscriber { public void SendNotification(object sender, TransactionEventArgs e) { //Console.WriteLine("Your Account is {0} for Rs.{1} ", e.TranactionType, e.TranactionAmount); MessageBox.Show(e.TranactionType); MessageBox.Show(e.TranactionAmount.ToString()); } } }
Что я уже пробовал:
это консольный пример, который я нашел. я пытаюсь сделать это в winform. не уверен, правильно ли я поставил позицию.
1. это хорошая практика, чтобы создать учетной записи в таком положении? внутри частичного класса Form1, или я должен поместить его в класс program Main()?
2. Хорошо ли поместить подписку на событие в форму 1()?
3. Нужно ли ставить отписку , куда при необходимости?
учебное мероприятие! Спасибо!
Iqra Ali
Где находится код для консольного приложения? Ваши вопросы неясны. Можете ли вы отредактировать свою озабоченность с немного большей ясностью?
RaviRanjanKr
Пожалуйста, будьте более конкретны, задавая вопрос.