none
在方法中如何调用事件。谢谢大家。急死我了 RRS feed

答案

  •  我说个调用Form1_Load(object sender, EventArgs e)的方案,咱们再进行讨论

    this.Form1_Load(this,EventArgs.Empty);
    • 已标记为答案 heyf 2009年3月13日 0:01
    2009年3月11日 15:12

全部回复

  • 在方法中如何调用事件?
    技术无止境!
    2009年3月9日 5:45
  • 你好!
         参考这个实例,希望对你有帮助:
    namespace DotNetEvents
    {
    using System;
    using System.Collections.Generic;

    public class CustomEventArgs : EventArgs
    {
    public CustomEventArgs(string s)
    {
    message = s;
    }
    private string message;

    public string Message
    {
    get { return message; }
    set { message = value; }
    }
    }

    class Publisher
    {

    // Declare the event using EventHandler<T>
    public event EventHandler<CustomEventArgs> RaiseCustomEvent;

    public void DoSomething()
    {
    // Write some code that does something useful here
    // then raise the event. You can also raise an event
    // before you execute a block of code.
    OnRaiseCustomEvent(new CustomEventArgs("Did something"));

    }

    // Wrap event invocations inside a protected virtual method
    // to allow derived classes to override the event invocation behavior
    protected virtual void OnRaiseCustomEvent(CustomEventArgs e)
    {
    // Make a temporary copy of the event to avoid possibility of
    // a race condition if the last subscriber unsubscribes
    // immediately after the null check and before the event is raised.
    EventHandler<CustomEventArgs> handler = RaiseCustomEvent;

    // Event will be null if there are no subscribers
    if (handler != null)
    {
    // Format the string to send inside the CustomEventArgs parameter
    e.Message += String.Format(" at {0}", DateTime.Now.ToString());

    // Use the () operator to raise the event.
    handler(this, e);
    }
    }
    }

    //Class that subscribes to an event
    class Subscriber
    {
    private string id;
    public Subscriber(string ID, Publisher pub)
    {
    id = ID;
    // Subscribe to the event using C# 2.0 syntax
    pub.RaiseCustomEvent += HandleCustomEvent;
    }

    // Define what actions to take when the event is raised.
    void HandleCustomEvent(object sender, CustomEventArgs e)
    {
    Console.WriteLine(id + " received this message: {0}", e.Message);
    }
    }

    class Program
    {
    static void Main(string[] args)
    {
    Publisher pub = new Publisher();
    Subscriber sub1 = new Subscriber("sub1", pub);
    Subscriber sub2 = new Subscriber("sub2", pub);

    // Call the method that raises the event.
    pub.DoSomething();

    // Keep the console window open
    Console.WriteLine("Press Enter to close this window.");
    Console.ReadLine();

    }
    }
    }

    周雪峰
    • 已标记为答案 heyf 2009年3月9日 23:41
    • 取消答案标记 heyf 2009年3月10日 7:27
    • 已建议为答案 KeFang Chen 2009年3月11日 2:58
    • 取消建议作为答案 heyf 2009年3月11日 12:29
    2009年3月9日 7:56
    版主
  •  我说个调用Form1_Load(object sender, EventArgs e)的方案,咱们再进行讨论

    this.Form1_Load(this,EventArgs.Empty);
    • 已标记为答案 heyf 2009年3月13日 0:01
    2009年3月11日 15:12
  • 这个帖子有骗分的嫌疑啊,汗
    http://www.mapgou.cn
    2009年3月12日 8:29
  •  你有好的方案了吗。。。VC++能用sendmessage,,net好像可以用process这个控件,,我要去查查,,平时都没用到这样的功能,,
    2009年3月13日 2:07
  • 有找到新的方案了吗
    2009年5月27日 13:15