找不到MainWindow的无效方法

本文关键字:方法 无效 MainWindow 找不到 | 更新日期: 2023-09-27 18:29:58

我正试图弄清楚如何清除我在桌面上创建的图形。听说最好的方法就是用这个。无效()。

问题是,当我将它添加到代码中时,Visual Studio无法识别该方法。我正在使用适用于Desktop 2012和.NET 4.5的VS Express。

有什么想法吗?

错误消息:

"WpfApplication1.MainWindow"不包含的定义"Invalidate"且没有接受第一个找不到"WpfApplication1.MainWindow"类型的参数(您是缺少using指令或程序集引用?)

以下是代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        System.Windows.Forms.Timer _timer = new Timer() { Interval = 1, Enabled = true };
        _timer.Tick += new EventHandler(Timer_Tick);
    }
    private void Timer_Tick(object sender, EventArgs e)
    {
        using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
        {
            System.Drawing.Point pt = System.Windows.Forms.Cursor.Position;
            g.DrawEllipse(Pens.Black, pt.X - 10, pt.Y - 10, 20, 20);                
        }
        this.Invalidate(); 
    }
}

编辑:

感谢大家的提醒。

我试过使用RedrawWindow(),但每次开始测试时程序都会崩溃。有什么想法吗?我正在尝试用这个矩形rc更新桌面。

例如

RECT rc=新RECT(pt.X-20,pt.Y-20,pt.X+20,pt.Y+20);

RedrawWindow(IntPtr.Zero,rc,IntPtr.Zero,0x0400/*RDW_FRAME*/|0x0100/*RDW_UPDATENOW*/|0x0001/*RDW_INVALIDATE*/);

有什么想法吗?

找不到MainWindow的无效方法

由于您在桌面上绘图,使主窗口无效将没有帮助。您需要使Desktop无效。

为此,请使用RedrawWindow函数。

以下是RedrawWindow 的p/Invoke声明

WPF中不是InvalidateVisual()吗?

请参阅http://msdn.microsoft.com/en-us/library/system.windows.uielement.invalidatevisual.aspx

Invalidate()方法是Windows Forms方法,但您使用的是WPF。在WPF中,使用相当于Windows窗体的Invalidate()InvalidateVisual()