Error 1 The base class or interface 'System.ComponentModel.Component' in assembly 'System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' referenced by type 'System.Windows.Forms.Timer' could not be resolved
k:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Windows.Forms.dll App2
添加system.windows.forms
引用后,我收到此错误消息。
答案 0 :(得分:4)
因为你正在使用Wpf我做了快速工作的例子。确保您的项目引用看起来像这样。
<强>主窗口强>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Forms;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
Timer tmr = new Timer();
public MainWindow()
{
InitializeComponent();
tmr.Interval = 2000;
tmr.Tick += new EventHandler(tmr_Tick);
tmr.Start();
}
void tmr_Tick(object sender, EventArgs e)
{
tmr.Stop();
throw new NotImplementedException();
}
}
}
正如roken所说,如果你可以使用Wpf Dispatcher Timer会更容易。在查看示例链接时,没有必要使用Windows窗体定时器,在这种情况下,Dispatcher定时器将正常工作,因为这是一个WPF程序。
根据您的链接修改修改
public partial class MainWindow : Window
{
System.Windows.Threading.DispatcherTimer tmrStart = new System.Windows.Threading.DispatcherTimer();
System.Windows.Threading.DispatcherTimer tmrStop = new System.Windows.Threading.DispatcherTimer();
public MainWindow()
{
InitializeComponent();
tmrStart.Interval = TimeSpan.FromSeconds(2); //Delay before shown
tmrStop.Interval = TimeSpan.FromSeconds(3); //Delay after shown
tmrStart.Tick += new EventHandler(tmr_Tick);
tmrStop.Tick += new EventHandler(tmrStop_Tick);
}
void tmrStop_Tick(object sender, EventArgs e)
{
tmrStop.Stop();
label1.Content = "";
}
void tmr_Tick(object sender, EventArgs e)
{
tmrStart.Stop();
label1.Content = "Success";
tmrStop.Start();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
tmrStart.Start();
}
}
答案 1 :(得分:3)
如果您只使用WPF,则没有理由引用System.Windows.Forms(WinForms)。这是两种不同的技术,除非必要,否则我不建议将它们混合使用。
如果您使用的是WinForms Timer,请考虑使用WPF的DispatcherTimer代替。
答案 2 :(得分:0)
尝试手动添加对System
的引用。
1)右键单击您的项目。点击Unload Project
。
2)右键单击卸载的项目。点击Edit <YourProjectName>.csproj
3)找到包含所有ItemGroup
的{{1}}并在新行上添加<Reference Include="AssemblyName">
。
4)保存文件并右键单击您的项目,然后单击<Reference Include="System" />