-3

こんにちは私はコンパイルするためにこのコードを修正しようとしていますが、方法を見つけることができません

エラー:

Pro \ AGeeksToy \ Controls \ LadderHeader.cs(218,98):エラーCS0426:タイプ名'menuData'がタイプ'AGeeksToy.CoreDataTypes.AGeeksToyToolStripMenuItem>'に存在しません

これはエラーです。

   private void ChangeStakingType(AGeeksToyToolStripMenuItem<EnhancedType<StakingTypeEnum>>.menuData newType)
    {
        this.StakeBox.StakingType.Value = newType.Data.Value;
    }

AGeeksToyToolStripMenuItemクラスコード:

  namespace AGeeksToy.CoreDataTypes
{
    using System;
    using System.Windows.Forms;

    public abstract class AGeeksToyToolStripMenuItem<T> : ToolStripMenuItem, AGeeksToyMenu
    {
        public MouseButtons LastMouseButton;
        public MenuData<T> menuData;
        public static readonly VoidEventWithParam<MenuData<T>> RightClicked;

        static AGeeksToyToolStripMenuItem()
        {
            AGeeksToyToolStripMenuItem<T>.RightClicked = new VoidEventWithParam<MenuData<T>>();
        }

        protected AGeeksToyToolStripMenuItem(T obj, string text) : this(obj, text, null)
        {
        }

        protected AGeeksToyToolStripMenuItem(T obj, string text, Control ctrl)
        {
            base.DropDown.ImageList = IconManager.m_ImageList;
            this.menuData = new MenuData<T>(obj, ctrl);
            this.Text = text;
        }

        protected override void Dispose(bool disposing)
        {
            base.DropDown.ImageList = null;
            base.Dispose(disposing);
        }

        protected override void OnClick(EventArgs e)
        {
            if (this.MenuControl != null)
            {
                this.MenuControl.Refresh();
            }
            base.OnClick(e);
            if (this.LastMouseButton == MouseButtons.Right)
            {
                AGeeksToyToolStripMenuItem<T>.RightClicked.TriggerEvent(this.menuData);
            }
        }

        protected override void OnMouseDown(MouseEventArgs e)
        {
            this.LastMouseButton = e.Button;
            base.OnMouseDown(e);
        }

        public virtual void SetMenu()
        {
            this.LastMouseButton = MouseButtons.Left;
            if (this.MenuControl != null)
            {
                base.Visible = this.MenuControl.Visible;
                this.Enabled = this.MenuControl.Enabled;
            }
            foreach (ToolStripItem item in base.DropDownItems)
            {
                if (item is AGeeksToyMenu)
                {
                    (item as AGeeksToyMenu).SetMenu();
                }
            }
        }

        public T Menu_Data
        {
            get
            {
                return this.MenuObject;
            }
        }

        protected Control MenuControl
        {
            get
            {
                return this.menuData.Control;
            }
        }

        protected T MenuObject
        {
            get
            {
                return this.menuData.Data;
            }
            set
            {
                this.menuData.Data = value;
            }
        }


        public class MenuData<T>
        {
            public System.Windows.Forms.Control Control;
            public T Data;

            public MenuData(T obj, System.Windows.Forms.Control ctrl)
            {
                this.Data = obj;
                this.Control = ctrl;
            }
        }
    }
}

http://i.stack.imgur.com/XfUIA.png

エラーをコンパイルします。

誰かがプロジェクトをダウンロードするか、ソースを確認できる場合は、ここで入手できます

リンクGoogleコードをダウンロード

トランクも利用できますが、直接リンクを投稿することはできません。

助けてくれてありがとう

4

2 に答える 2

9

あなたは、1 つのパラメーターを取る ChangeStakingType という名前の非公開の void を返すメソッドがあると言っています。パラメータの名前は「newType」で、パラメータのタイプは ですAGeeksToyToolStripMenuItem<EnhancedType<StakingTypeEnum>>.menuData。しかしmenuData、あなたのプログラムには型名がありません。というフィールドとmenuDataというタイプMenuData<T>がありますが、 というタイプはありませんmenuData

于 2012-05-02T15:37:22.700 に答える
0

C# では大文字と小文字が区別されます。

menuData実際のクラスが呼び出されたときに、クラスを使用しようとしていますMenuData。大文字にしM

于 2012-05-02T15:36:06.330 に答える