Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类XXX可以设计,但不是文件中的第一个类。VisualStudio要求设计者使用文件中的第一个类_C#_Visual Studio_Visual Studio 2012 - Fatal编程技术网

C# 类XXX可以设计,但不是文件中的第一个类。VisualStudio要求设计者使用文件中的第一个类

C# 类XXX可以设计,但不是文件中的第一个类。VisualStudio要求设计者使用文件中的第一个类,c#,visual-studio,visual-studio-2012,C#,Visual Studio,Visual Studio 2012,我将此类和内部类作为命名空间的一部分,如下所示(刚刚删除并替换了一些代码和命名空间声明: namespace X.Y.MessageHandlers.AsxActivity { public class AsxActivityAliveEventMessageHandler : IHandleMessages<AsxActivityAliveEvent> { private const double INTERVAL = 10000;

我将此类和内部类作为命名空间的一部分,如下所示(刚刚删除并替换了一些代码和命名空间声明:

namespace X.Y.MessageHandlers.AsxActivity
{
    public class AsxActivityAliveEventMessageHandler : IHandleMessages<AsxActivityAliveEvent>
    {
        private const double INTERVAL = 10000;
        public static bool AsxConnected { get; set; }
        private static Dictionary<String, TagTimer> _connectionTimers = new Dictionary<string, TagTimer>();

        public void Handle(AsxActivityAliveEvent message)
        {
              ...
        }

        void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
              ...
        }

        static void NotifyClients(AsxActivityAliveEvent message)
        {
              ...
        }
    }

    internal class TagTimer : Timer
    {
        public object Tag { get; set; }
    }
}
namespace X.Y.MessageHandlers.AsxActivity
{
公共类AsxActivityAliveEventMessageHandler:IHandleMessages
{
专用常数双间隔=10000;
公共静态bool AsxConnected{get;set;}
私有静态字典_connectionTimers=新字典();
公共无效句柄(AsxActivityAliveEvent消息)
{
...
}
无效计时器(对象发送器,System.Timers.ElapseDevenTargets e)
{
...
}
静态void NotifyClients(AsxActivityAliveEvent消息)
{
...
}
}
内部类TagTimer:Timer
{
公共对象标记{get;set;}
}
}
每当我从解决方案资源管理器双击我的“asxactivityaliveventmessagehandler.cs”时,VisualStudio就会弹出一个我以前从未见过的窗口,让我 以下讯息:

以防止加载前可能的数据丢失 对于设计器,必须解决以下错误:

接下来是这样的解释:

可以设计TagTimer类,但它不是 Visual Studio要求设计人员使用 移动类代码,使其成为文件中的第一个类 然后再次尝试加载设计器


尝试将类TagTimer从内部更改为公共更改为私有,但错误似乎没有改变。我是否遗漏了什么?

当您双击文件时,VS尝试打开设计器(如果文件中有可设计的类)。您可以将
TagTimer
类移动到
AsxActivityAliveEventMessage上方处理程序


另一个解决方案是打开文件,不是双击,而是按F7。

谢谢。我想我还有另一个问题;为什么这个类被设置为可设计类?我想是因为
计时器
源于
组件