Winform: private WPFButton wpfButton1;
            this.elementHost2.AutoSize = true;
            this.elementHost2.BackColor = System.Drawing.Color.Transparent;
            this.elementHost2.ForeColor = System.Drawing.Color.Transparent;
            this.elementHost2.Location = new System.Drawing.Point(110, 284);
            this.elementHost2.Name = "elementHost2";
            this.elementHost2.Size = new System.Drawing.Size(196, 52);
            this.elementHost2.TabIndex = 3;
            this.elementHost2.Text = "elementHost2";
            this.elementHost2.Child = this.wpfButton1;
WPF控件貌似只能在自己那儿获取事件啊? <Grid Height="52" Width="196" Opacity="0.5">
        <Button HorizontalAlignment="Right" Style="{DynamicResource GlassButtonStyle}" VerticalAlignment="Top" Width="190" Height="52" Content="Button" Foreground="#FFFFFFFF" Click="Button_Click" />
    </Grid>

解决方案 »

  1.   

    <Button x:Name="DrawButton" Height="40" Width="120" 
    VerticalAlignment="Top" 
    HorizontalAlignment="Left">
    Click="DrawButton_Click"
    </Button>
    private void DrawButton_Click(object sender, RoutedEventArgs e)
    {}
      

  2.   


    这个事件还是在控件里面发生的啊~怎么返回给winform窗体?DrawButton类里面不能再申明个winform类吧?
      

  3.   

    DrawButton_Click 方法不是写在Winform窗体类里面吗? 方法里的this不就是winform
      

  4.   

    WPFButton是自定义控件~
    另外一个类
     public partial class WPFButton : UserControl
        {
            public WPFButton()
            {
                InitializeComponent();
            }        public void Button_Click(object sender, RoutedEventArgs e)
            {
            }
        }
      

  5.   

    Winform里不能注册这个Button的Click事件?最差最差,在Button里暴露个Event总是可以的吧。public partial class WPFButton : UserControl
        {
            public WPFButton()
            {
                InitializeComponent();
            }        public EventHandler Click;        public void Button_Click(object sender, RoutedEventArgs e)
            {
                 if (Click != null)
                    Click(sender, e);
            }
        }
    呆会我试试。
      

  6.   

    public event EventHandler Click;
      

  7.   

    WpfButton 代码:public event EventHandler MyWpfButtonClick;private void button1_Click(object sender, RoutedEventArgs e)
    {
        if (MyWpfButtonClick != null)
            MyWpfButtonClick(sender, e);
    }
    使用的Form:private void Form1_Load(object sender, EventArgs e)
    {
        this.myWpfButton1.MyWpfButtonClick += new EventHandler(myWpfButton1_MyWpfButtonClick);
    }void myWpfButton1_MyWpfButtonClick(object sender, EventArgs e)
    {
         MessageBox.Show("MyWpfButtonClick");
    }
      

  8.   

    其实问题在于,你封装的是UserControl,Button只是用户控件里的一个子控件。
    只要在WPF自定义控件类里,暴露这个Button就可以了。这样也不用封装Event了。public Button WpfButton
    {
        get { return this.button1; }
    }
    Winform:private void Form1_Load(object sender, EventArgs e)
    {
        //this.myWpfButton1.MyWpfButtonClick += new EventHandler(myWpfButton1_MyWpfButtonClick);
        this.myWpfButton1.WpfButton.Content = "Hello";
        this.myWpfButton1.WpfButton.Click += new System.Windows.RoutedEventHandler(WpfButton_Click);
    }void WpfButton_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        MessageBox.Show("MyWpfButton.Button.Click");
    }
      

  9.   

    按fangxinggood的做法应该就可以了吧,个人建议使用事件传递public partial class WPFButton : UserControl
        {
            public WPFButton()
            {
                InitializeComponent();
            }        public event EventHandler<EventArgs> WPFButtonClick;        public void Button_Click(object sender, RoutedEventArgs e)
            {
                EventHandler<EventArgs> handler = WPFButtonClick;
                if (handler != null)
                    handler(sender, e);
            }
        }
      

  10.   

    恩~各位大神都OK……定义个事件就好说了~结贴~我正在使用《Csdn收音机》第一时间获取最新动态!