Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > menu


Автор: Grok 10.3.2009, 16:42
Привет!!
У меня возникла проблемка при генерировании меню
Код

    interface IMenuFactory
    {
        MenuStrip create();
    }

    public class TetrisMenuFactory : IMenuFactory
    {
        private MenuStrip ms = new MenuStrip();
        public MenuStrip create()
        {
            ms.Items.AddRange(new ToolStripItem[] {
            new NewGameToolStripMenuItemFactory().create()});
            
            ms.Location = new System.Drawing.Point(0, 0);
            ms.Name = "mainMenuStrip";
            ms.Size = new System.Drawing.Size(431, 24);
            ms.TabIndex = 2;
            ms.Text = "mainMenuStrip";
            return ms;
        }
    }

    interface IToolStripMenuItemFactory
    {
        ToolStripMenuItem create();
    }

    public class TetrisToolStripMenuItemFactory : IToolStripMenuItemFactory
    {
        private ToolStripMenuItem mi = new ToolStripMenuItem();
        public ToolStripMenuItem create() 
        {
            mi.Name = "tetrisToolStripMenuItem";
            mi.Size = new System.Drawing.Size(112, 22);
            mi.Text = "Tetris";
            return mi;
        }
    }

    public class NewGameToolStripMenuItemFactory : IToolStripMenuItemFactory
    {
        private ToolStripMenuItem mi = new ToolStripMenuItem();
        public ToolStripMenuItem create()
        {
            mi.DropDownItems.AddRange(new ToolStripItem[] { 
                new TetrisToolStripMenuItemFactory().create() });
            
            mi.Name = "newGameToolStripMenuItem";
            mi.Size = new System.Drawing.Size(152, 22);
            mi.Text = "New Game";
            return mi;
        }
    }


потом в конструкторе окна 
Код

        public MainForm()
        {
            InitializeComponent();
            TetrisMenuFactory ms = new TetrisMenuFactory();
            mainMenuStrip = ms.create();
        }


по идеи меню что генерилось в InitializeComponent() должно заменится тем что генерил я, но ничего не произошло  smile 

Автор: -Mikle- 11.3.2009, 19:31
нет, не должно.

вот так надо.
this.MainMenuStrip = ms.create();

Автор: Grok 11.3.2009, 19:57
а это не одно и тоже ?

Автор: -Mikle- 11.3.2009, 20:10
ну, скажете...

Код

    string text = "hello";
    textBox1.Text = text;

    // повлияет ли эта строчка на содержимое текстового поля?
    text = "world!"; 


Если ответ для Вас не очевиден, то я рекомендую Вам начать с основ, а не с интерфейсного программирования.

Добавлено через 2 минуты и 34 секунды
mainMenuStrip с маленькой буквы - это имя переменной, а MainMenuStrip с большой - это уже имя свойства класса Form.

Автор: Grok 11.3.2009, 20:46
sorry, it was my mistake ... 

я акцентировал внимание на "this."... 

но всеравно эфекта никакого :(

Добавлено через 4 минуты и 47 секунд
хм ..  появилось после строки 
Код

this.Controls.Add(ms.create());


Автор: -Mikle- 12.3.2009, 00:16
Цитата(Grok @  11.3.2009,  23:46 Найти цитируемый пост)
хм ..  появилось после строки 

код C#
1:

this.Controls.Add(ms.create());


да, я забыл написать...

Автор: Grok 12.3.2009, 19:38
Спасибо )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)