2009-04-26 74 views
0

我想尝试在Microsoft Visual C#Express Edition的代码,我得到这个错误:名称空间不存在

类型或命名空间名称“属性”不存在命名空间存在' EducationalSuite.Core'(您是否缺少程序集参考?)

我右键单击引用,但没有找到“属性”或“EducationalSuite.Core”。

有什么想法?

感谢

喜再次, 这里是代码:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Text; 
using System.Windows.Forms; 
using System.Media; 
using System.Resources; 

namespace EducationalSuite.Core.Plugins 
{ 
    public delegate void RectangleItemClickedDelegate(Rectangle rect, int index); 

    public partial class GeoSafariItem : Control 
    { 
     protected List<Rectangle> lastFlashingItems = new List<Rectangle>(); 
     protected int lastHeight = 0; 

     private Image imageFile = null; 
     protected List<Rectangle> hotspots = new List<Rectangle>(); 
     protected Dictionary<int, string> textItems = new Dictionary<int, string>(); 
     protected Dictionary<int, FileInfo> audioItems = new Dictionary<int, FileInfo>(); 
     protected Rectangle lastRectangle; 
     protected int selectedIndex = 0; 
     protected int countItemsLeft = 6; 
     protected int countItemsRight = 6; 
     protected int imageOffsetTop = 0; 
     protected int imageOffsetBottom = 0; 
     protected bool paintHotSpots = false, colorSwitch = false, paintItemLabels = false; 
     protected Timer timer = new Timer(); 

     public event RectangleItemClickedDelegate HotspotClick; 
     public event RectangleItemClickedDelegate QuestionItemClick; 
     public event RectangleItemClickedDelegate QuestionItemRightClick; 

     protected void OnHotspotClick(Rectangle rect, int index) 
     { 
      if (HotspotClick != null) 
      { 
       HotspotClick(this.RectangleToScreen(rect), index); 
      } 
     } 

     protected void OnQuestionItemRightClick(Rectangle rect, int index) 
     { 
      if (QuestionItemRightClick != null) 
      { 
       QuestionItemRightClick(this.RectangleToScreen(rect), index); 
      } 
     } 

     protected void OnQuestionItemClick(Rectangle rect, int index) 
     { 
      if (QuestionItemClick != null) 
      { 
       QuestionItemClick(this.RectangleToScreen(rect), index); 
      } 
     } 

     public GeoSafariItem() 
     { 
      this.imageFile = EducationalSuite.Core.Properties.Resources.singlepixel; 

      timer.Interval = 100; 
      timer.Tick += new EventHandler(timer_Tick); 
      timer.Enabled = true; 

      this.MouseUp += new MouseEventHandler(GeoSafariItem_MouseUp); 

      // Activates double buffering 
      SetStyle(ControlStyles.UserPaint, true); 
      SetStyle(ControlStyles.AllPaintingInWmPaint, true); 
      SetStyle(ControlStyles.DoubleBuffer, true); 
      SetStyle(ControlStyles.ResizeRedraw, true); 

      this.DoubleBuffered = true; 

      //InitializeComponent(); 
     } 

     public void SetItemText(int index, string text) 
     { 
      if (string.IsNullOrEmpty(text)) 
      { 
       if (this.textItems.ContainsKey(index)) textItems.Remove(index); 
      } 
      else 
      { 
       this.textItems[index] = text; 
      } 

      if (PaintItemLabels) 
      { 
       this.Invalidate(); 
      } 
     } 


     public string GetItemText(int index) 
     { 
      if (this.textItems.ContainsKey(index)) 
      { 
       return this.textItems[index]; 
      } 
      else 
      { 
       return string.Empty; 
      } 
     } 

     public void SetItemAudio(int index, FileInfo file) 
     { 
      if ((file == null) && !file.Exists) 
      { 
       if (this.audioItems.ContainsKey(index)) audioItems.Remove(index); 
      } 
      else 
      { 
       this.audioItems[index] = file; 
      } 
     } 

     public FileInfo GetItemAudio(int index) 
     { 
      if (this.audioItems.ContainsKey(index)) 
      { 
       return this.audioItems[index]; 
      } 
      else 
      { 
       return null; 
      } 
     } 

     #region Recording Regions 
     bool isRecording = false; 
     int recordingIndex = 0; 
     Point recordTopLeft = Point.Empty; 
     Point recordBottomRight = Point.Empty; 
     List<Rectangle> recordedRectangles = new List<Rectangle>(); 

     public void StartRecording() 
     { 
      isRecording = true; 
      recordingIndex = 0; 
      selectedIndex = 0; 
      recordedRectangles.Clear(); 
      this.MouseUp += new MouseEventHandler(GeoSafariItemRecord_MouseUp); 

      this.Invalidate(); 
     } 

     public List<Rectangle> FinishRecording() 
     { 
      isRecording = false; 
      this.MouseUp -= new MouseEventHandler(GeoSafariItemRecord_MouseUp); 
      this.Invalidate(); 

      this.Hotspots.Clear(); 
      foreach (Rectangle r in recordedRectangles) 
      { 
       this.Hotspots.Add(r); 
      } 

      return recordedRectangles; 
     } 

     private void GeoSafariItemRecord_MouseUp(object sender, MouseEventArgs e) 
     { 
      if (isRecording) 
      { 
       Rectangle size = SizeRect; 
       double ratio = (double)imageFile.Height/(double)size.Height; 

       if (recordTopLeft == Point.Empty) 
       { 
        recordTopLeft = new Point(
         (int)(((double)e.Location.X - (double)size.Left) * ratio), 
         (int)(((double)e.Location.Y - (double)size.Top) * ratio) 
         ); 
       } 
       else 
       { 
        recordBottomRight = new Point(
         (int)(((double)e.Location.X - (double)size.Left) * ratio), 
         (int)(((double)e.Location.Y - (double)size.Top) * ratio) 
         ); 

        Rectangle r = new Rectangle(recordTopLeft, 
         new Size(recordBottomRight.X - recordTopLeft.X, recordBottomRight.Y - recordTopLeft.Y)); 

        this.recordedRectangles.Add(r); 
        recordingIndex++; 
        selectedIndex++; 

        recordTopLeft = Point.Empty; 
        recordBottomRight = Point.Empty; 
       } 
      } 
      this.Invalidate(); 
     } 
     #endregion 

     void timer_Tick(object sender, EventArgs e) 
     { 
      colorSwitch = !colorSwitch; 

      if (lastRectangle.Width > 0) 
      { 
       this.Invalidate(lastRectangle); 
      } 
      else 
      { 
       this.Invalidate(); 
      } 
     } 

     private Rectangle SizeRect 
     { 
      get 
      { 
       int rw, rh, 
       cw = (this.Width - 42), 
       ch = (this.Height - 2), 
       ox = 21, 
       oy = 1; 

       rw = cw; 
       rh = ch; 

       double imageRatio = (double)imageFile.Width/(double)imageFile.Height; 
       double controlRatio = (double)cw/(double)ch; 

       if (controlRatio > imageRatio) 
       { 
        rw = (int)Math.Round((double)rh * imageRatio); 
        ox += Math.Abs(rw - cw)/2; 
       } 
       else if (controlRatio < imageRatio) 
       { 
        rh = (int)Math.Round((double)rw/imageRatio); 
        oy += Math.Abs(rh - ch)/2; 
       } 

       return new Rectangle(ox, oy, rw, rh); 
      } 
     } 

     void GeoSafariItem_MouseUp(object sender, MouseEventArgs e) 
     { 
      Rectangle size = SizeRect; 
      for (int i = 0; i < hotspots.Count; i++) 
      { 
       Rectangle hotspot = hotspots[i]; 
       double ratio = (double)size.Height/(double)imageFile.Height; 
       Rectangle adjustedRectange = new Rectangle(
        size.Left + (int)(hotspot.X * ratio), 
        size.Top + (int)(hotspot.Y * ratio), 
        (int)(hotspot.Width * ratio), 
        (int)(hotspot.Height * ratio)); 

       if (adjustedRectange.Contains(e.Location)) 
       { 
        OnHotspotClick(hotspot, i); 
        return; 
       } 
      } 

      for (int i = 0; i < lastFlashingItems.Count; i++) 
      { 
       if (lastFlashingItems[i].Contains(e.Location)) 
       { 
        if (e.Button == MouseButtons.Right) 
         OnQuestionItemRightClick(lastFlashingItems[i], i); 
        else 
         OnQuestionItemClick(lastFlashingItems[i], i); 

        return; 
       } 
      } 
     } 

     public List<Rectangle> Hotspots 
     { 
      get { return hotspots; } 
     } 

     public Image ImageFile 
     { 
      get { return imageFile; } 
      set 
      { 
       imageFile = value; 
       lastFlashingItems.Clear(); 
       this.Invalidate(); 
      } 
     } 

     public int SelectedIndex 
     { 
      get { return selectedIndex; } 
      set { selectedIndex = value; this.Invalidate(); } 
     } 

     public int CountItemsLeft 
     { 
      get { return countItemsLeft; } 
      set 
      { 
       countItemsLeft = value; 
       lastFlashingItems.Clear(); 
       this.Invalidate(); 
      } 
     } 

     public int CountItemsRight 
     { 
      get { return countItemsRight; } 
      set 
      { 
       countItemsRight = value; 
       lastFlashingItems.Clear(); 
       this.Invalidate(); 
      } 
     } 

     public int ImageOffsetTop 
     { 
      get { return imageOffsetTop; } 
      set 
      { 
       imageOffsetTop = value; 
       lastFlashingItems.Clear(); 
       this.Invalidate(); 
      } 
     } 

     public int ImageOffsetBottom 
     { 
      get { return imageOffsetBottom; } 
      set 
      { 
       imageOffsetBottom = value; 
       lastFlashingItems.Clear(); 
       this.Invalidate(); 
      } 
     } 

     public bool PaintHotSpots 
     { 
      get { return paintHotSpots; } 
      set { paintHotSpots = value; this.Invalidate(); } 
     } 

     public bool PaintItemLabels 
     { 
      get { return paintItemLabels; } 
      set { paintItemLabels = value; this.Invalidate(); } 
     } 

     protected override void OnPaint(PaintEventArgs pe) 
     { 
      Graphics g = pe.Graphics; 

      string itemText; 
      SizeF sizeItemText; 
      double topOffset = imageOffsetTop; 
      double bottomOffset = imageOffsetBottom; 
      double topOffsetPct = (double)topOffset/(double)imageFile.Height; 
      double bottomOffsetPct = (double)bottomOffset/(double)imageFile.Height; 

      Rectangle size = SizeRect; 

      SolidBrush brush = new SolidBrush(this.BackColor); 
      g.FillRectangle(brush, 0, 0, this.Width - 1, this.Height - 1); 

      g.FillRectangle(Brushes.Ivory, size.X - 25, size.Y, size.Width + 50, size.Height); 
      g.DrawRectangle(Pens.DarkKhaki, size.X - 25, size.Y - 1, size.Width + 50, size.Height + 1); 
      g.DrawImage(imageFile, size.X, size.Y, size.Width, size.Height); 


      Rectangle rect, rectItemText; 
      Brush selectedColor = (colorSwitch ? Brushes.Crimson : Brushes.Red); 
      topOffset = topOffsetPct * size.Height; 
      bottomOffset = bottomOffsetPct * size.Height; 
      int tmpHeight = (size.Height - (int)topOffset - (int)bottomOffset)/countItemsLeft; 
      if (size.Height != this.lastHeight || this.lastFlashingItems.Count == 0) 
      { 
       lastHeight = size.Height; 
       lastFlashingItems.Clear(); 

       int actualIndex = 0; 
       for (int i = 0; i < countItemsLeft; i++) 
       { 
        int yy = size.Y + (tmpHeight * i) + (int)topOffset; 
        int xx = size.X - 18; 
        rect = new Rectangle(xx, yy, 16, 8); 
        this.lastFlashingItems.Add(rect); 

        g.FillRectangle((actualIndex == selectedIndex ? selectedColor : Brushes.Khaki), rect); 
        g.DrawRectangle(Pens.DarkKhaki, rect); 

        if (actualIndex == selectedIndex) 
        { 
         lastRectangle = rect; 
        } 

        itemText = this.GetItemText(actualIndex); 
        if (PaintItemLabels && !string.IsNullOrEmpty(itemText)) 
        { 
         // Draw Text next to each notch 
         sizeItemText = g.MeasureString(itemText, this.Font); 

         int xxx = size.X + 10; 
         rectItemText = new Rectangle(xxx, yy, Convert.ToInt32(sizeItemText.Width), Convert.ToInt32(sizeItemText.Height)); 
         PaintHotspot(g, Color.White, rectItemText, 200); 

         g.DrawString(itemText, this.Font, Brushes.Black, (float)xxx, (float)yy); 
        } 

        actualIndex++; 
       } 

       tmpHeight = (size.Height - (int)topOffset - (int)bottomOffset)/countItemsRight; 
       for (int i = 0; i < countItemsRight; i++) 
       { 
        int yy = size.Y + (tmpHeight * i) + (int)topOffset; 
        int xx = size.X + size.Width + 2; 
        rect = new Rectangle(xx, yy, 16, 8); 
        this.lastFlashingItems.Add(rect); 

        g.FillRectangle((actualIndex == selectedIndex ? selectedColor : Brushes.Khaki), rect); 
        g.DrawRectangle(Pens.DarkKhaki, rect); 

        if (actualIndex == selectedIndex) 
        { 
         lastRectangle = rect; 
        } 

        itemText = this.GetItemText(actualIndex); 
        if (PaintItemLabels && !string.IsNullOrEmpty(itemText)) 
        { 
         // Draw Text next to each notch 
         sizeItemText = g.MeasureString(itemText, this.Font); 

         int xxx = size.X + size.Width - 10 - Convert.ToInt32(sizeItemText.Width); 
         rectItemText = new Rectangle(xxx, yy, Convert.ToInt32(sizeItemText.Width), Convert.ToInt32(sizeItemText.Height)); 
         PaintHotspot(g, Color.White, rectItemText, 200); 

         g.DrawString(itemText, this.Font, Brushes.Black, (float)xxx, (float)yy); 
        } 
        actualIndex++; 
       } 
      } 
      else 
      { 
       lastHeight = size.Height; 
       for (int i = 0; i < lastFlashingItems.Count; i++) 
       { 
        g.FillRectangle((i == selectedIndex ? selectedColor : Brushes.Khaki), lastFlashingItems[i]); 
        g.DrawRectangle(Pens.DarkKhaki, lastFlashingItems[i]); 

        if (i == selectedIndex) 
        { 
         lastRectangle = lastFlashingItems[i]; 
        } 
       } 

       if (PaintItemLabels) 
       { 
        int actualIndex = 0; 
        for (int i = 0; i < countItemsLeft; i++) 
        { 
         itemText = this.GetItemText(actualIndex); 
         if (!string.IsNullOrEmpty(itemText)) 
         { 
          int yy = size.Y + (tmpHeight * i) + (int)topOffset; 
          // Draw Text next to each notch 
          sizeItemText = g.MeasureString(itemText, this.Font); 

          int xxx = size.X + 10; 
          rectItemText = new Rectangle(xxx, yy, Convert.ToInt32(sizeItemText.Width), Convert.ToInt32(sizeItemText.Height)); 
          PaintHotspot(g, Color.White, rectItemText, 200); 

          g.DrawString(itemText, this.Font, Brushes.Black, (float)xxx, (float)yy); 
         } 

         actualIndex++; 
        } 

        tmpHeight = (size.Height - (int)topOffset - (int)bottomOffset)/countItemsRight; 
        for (int i = 0; i < countItemsRight; i++) 
        { 
         itemText = this.GetItemText(actualIndex); 
         if (!string.IsNullOrEmpty(itemText)) 
         { 
          int yy = size.Y + (tmpHeight * i) + (int)topOffset; 
          // Draw Text next to each notch 
          sizeItemText = g.MeasureString(itemText, this.Font); 

          int xxx = size.X + size.Width - 10 - Convert.ToInt32(sizeItemText.Width); 
          rectItemText = new Rectangle(xxx, yy, Convert.ToInt32(sizeItemText.Width), Convert.ToInt32(sizeItemText.Height)); 
          PaintHotspot(g, Color.White, rectItemText, 200); 

          g.DrawString(itemText, this.Font, Brushes.Black, (float)xxx, (float)yy); 
         } 
         actualIndex++; 
        } 
       } 
      } 

      // Calling the base class OnPaint 
      base.OnPaint(pe); 

      if (this.isRecording) 
      { 
       for (int i = 0; i < this.recordedRectangles.Count; i++) 
       { 
        rect = recordedRectangles[i]; 
        double ratio = (double)size.Height/(double)imageFile.Height; 
        Rectangle adjustedRectange = new Rectangle(
         size.Left + (int)(rect.X * ratio), 
         size.Top + (int)(rect.Y * ratio), 
         (int)(rect.Width * ratio), 
         (int)(rect.Height * ratio)); 

        PaintHotspot(g, Color.LightBlue, adjustedRectange, (i + 1).ToString()); 
       } 
      } 
      else if (this.paintHotSpots) 
      { 
       for (int i = 0; i < hotspots.Count; i++) 
       { 
        Rectangle hotspot = hotspots[i]; 
        double ratio = (double)size.Height/(double)imageFile.Height; 
        Rectangle adjustedRectange = new Rectangle(
         size.Left + (int)(hotspot.X * ratio), 
         size.Top + (int)(hotspot.Y * ratio), 
         (int)(hotspot.Width * ratio), 
         (int)(hotspot.Height * ratio)); 

        PaintHotspot(g, Color.LightGreen, adjustedRectange, (i + 1).ToString()); 
       } 
      } 
     } 

     protected virtual void PaintHotspot(Graphics g, Color c, Rectangle hotspot, int alpha) 
     { 
      PaintHotspot(g, c, hotspot, alpha, null); 
     } 

     protected virtual void PaintHotspot(Graphics g, Color c, Rectangle hotspot, string txt) 
     { 
      PaintHotspot(g, c, hotspot, 100, txt); 
     } 

     protected virtual void PaintHotspot(Graphics g, Color c, Rectangle hotspot, int alpha, string txt) 
     { 
      SolidBrush brush = new SolidBrush(Color.FromArgb(alpha, c)); 
      g.FillRectangle(brush, hotspot); 
      if (!string.IsNullOrEmpty(txt)) 
       g.DrawString(txt, this.Font, Brushes.DarkGreen, hotspot.Location); 
     } 
    } 
} 

回答

3

更新

我想象下面的行导致错误。

this.imageFile = EducationalSuite.Core.Properties.Resources.singlepixel; 

该代码指的是一个图像资源“单像素”。此映像必须位于EducationalSuite.Core程序集的默认资源文件中。首先确认您正在编辑所述程序集,方法是打开Project Properties并检查Application页面上的Default Namespace。这应该指出“EducationalSuite.Core”。如果情况并非如此,您很可能会错过对该组件的参考。

如果您打开EducationalSuite.Core项目,添加单像素资源的最简单方法是打开项目属性,资源选项卡并创建一个新的默认资源文件。从顶部打开“添加资源”下拉菜单,然后根据您是否已有文件或需要创建文件来选择现有文件或新图像。将资源命名为“单像素”。

Visual Studio将在Properties命名空间下为您生成Resources助手类,以便您可以通过代码中EducationalSuite.Core下的Properties.Resources.singlepixel访问资源。

老答案

一般属性命名空间是包含应用程序或用户特定设置的命名空间。您可以通过导航到项目属性中的设置选项卡来添加这些设置(和名称空间)。

不幸的是,根据这些信息很难说更多。你能提供导致这个错误的代码片段吗?

如果双击该错误消息,IDE会将您带到导致错误的行。

最有可能的是这段代码需要一个未添加到项目中的设置变量。

2

看起来你缺少的参考。如果它不在解决方案资源管理器中的参考文件中,那么我将在Windows中为“EducationalSuite.Core”进行文件搜索,以查看它在系统中的位置并添加它。您可能还缺少“使用”声明?如果你把鼠标悬停在“属性”文本上,你应该得到一个小的下拉菜单,以便为你添加使用。

如果这没有帮助,更多的信息会有帮助吗?

希望这会有所帮助!

+0

嗨马德,你是什么意思在Windows中进行文件搜索?我应该在我的C:\ Windows \ System中搜索它吗? – tintincutes 2009-04-26 13:28:27

+0

哦,顺便说一句,当悬停在“属性”上,我仍然得到相同的错误:名称空间“EducationalSuite.Core”中不存在类型或命名空间名称“属性”(您是否缺少程序集引用?) – tintincutes 2009-04-26 13:29:02

相关问题