drunkenprogram Ответов: 2

Я не могу найти menustrip


У меня есть пакет c# от моего начальника, но я не могу найти MenuStrip. Разве это не видно и перед бегом??? Он должен быть показан в нижней части формы, например "menustrip1". как поживает супериор????

это frmMain перед запуском : https://i.stack.imgur.com/gr4su.png

это работает frmMain :https://i.stack.imgur.com/NuZJT.png

это тоже работает frmMain : https://i.stack.imgur.com/CijTu.png


мыши frmmain.в CS

using log4net.Config;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Drawing;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;

namespace dwdErp
{
    public partial class FrmMain : Form
    {
        MenuStrip mnuStrip;
        ToolStripMenuItem mnuStripItem;
        ToolStripMenuItem SSMenu;
        Form reflectForm;

        public FrmMain()
        {
                InitializeComponent();
            XmlConfigurator.Configure(new FileInfo("Config/Log4net.xml"));
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            LogUtil.Log(LogUtil._INFO, "ERP System Started");
            initialize();

            this.Hide();
            FrmLogin login = new FrmLogin();
            login.StartPosition = FormStartPosition.CenterScreen;

            DialogResult dr = login.ShowDialog();
            switch (dr)
            {
                case DialogResult.OK:
                    login.Close();
                    //this.WindowState = FormWindowState.Maximized;
                    this.Show();
                    break;
                case DialogResult.Cancel:
                    Application.Exit();
                    break;
            }

            // To make this Form the Parent Form
            this.IsMdiContainer = true;

            //Creating object of MenuStrip class
            mnuStrip = new MenuStrip();

            //Placing the control to the Form
            pnl_menu.Controls.Add(mnuStrip);

            IDictionary<string, object=""> param = new Dictionary<string, object="">();
            IList list = Mapper.Instance().QueryForList("selectMenu", param);

            if (null == list || list.Count == 0)
            {
                throw new Exception("사용자의 메뉴 권한이 없습니다.");
            }
            else
            {
                string chkMenu = "";
                foreach (HybridDictionary hd in list)
                {
                    switch (hd["lvl"].ToString())
                    {
                        case "1":
                            if ("".Equals(chkMenu))
                                chkMenu = hd["menu_name"].ToString();

                            if (!chkMenu.Equals(hd["menu_name"].ToString()) )
                            {
                                mnuStrip.Items.Add(mnuStripItem);
                                chkMenu = hd["menu_name"].ToString();
                            }
                            mnuStripItem = new ToolStripMenuItem(hd["menu_name"].ToString());
                            mnuStripItem.Font = new System.Drawing.Font("Malgun Gothic", 11F); ;
                            break;
                        case "2":
                            SSMenu = new ToolStripMenuItem(hd["menu_name"].ToString(), null, new EventHandler(ChildClick), hd["frm_name"].ToString());
                            mnuStripItem.DropDownItems.Add(SSMenu);
                            break;
                    }
                    mnuStrip.Items.Add(mnuStripItem);
                }
                this.MainMenuStrip = mnuStrip;
            }
            SSMenu = new ToolStripMenuItem("그룹", null, new EventHandler(ChildClick), "dwdErp.FrmSysDepartment");
            ChildClick(SSMenu,null);
        }

        private void initialize()
        {
        }

        private void ChildClick(object sender, EventArgs e)
        {
            Assembly reflectAssembly = Assembly.GetExecutingAssembly();
            string formName = ((ToolStripMenuItem)sender).Name;

            pnl_content.Controls.Clear();

            reflectForm = (Form)reflectAssembly.CreateInstance(formName);

            reflectForm.TopLevel = false;
            reflectForm.MdiParent = this;
            pnl_content.Controls.Add(reflectForm);
            reflectForm.Size = new Size(pnl_content.Width, pnl_content.Height);
            reflectForm.Show();
        }

        private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            LogUtil.Log(LogUtil._INFO, "ERP System Ended");
        }

        // Handle the UI exceptions by showing a dialog box, and asking the user whether
        // or not they wish to abort execution.
        public static void FrmMain_UIThreadException(object sender, ThreadExceptionEventArgs t)
        {
            string errMsg = t.Exception.ToString();
            LogUtil.Log(LogUtil._ERROR, "[ ########## ERP System Error ] " + errMsg);
            MessageBox.Show("[ ########## ERP System Error ]\r\n\r\n" + LogUtil.LogMsg(errMsg));
        }

        private void pnl_content_Resize(object sender, EventArgs e)
        {
            if (null != reflectForm)
                reflectForm.Size = new Size(pnl_content.Width, pnl_content.Height);
        }

        private void mainLayout_Paint(object sender, PaintEventArgs e)
        {

        }
    }
}


Что я уже пробовал:

https://devblogs.microsoft.com/dotnet/updates-on-net-core-windows-forms-designer
но это не имеет значения

Richard MacCutchan

Спроси своего начальника. Это он дал тебе код.

CHill60

"начальник" вполне может быть эвфемизмом для "учителя", я думаю :)

Richard MacCutchan

Учитывая вопрос, я не стал утруждать себя чтением кода.

2 Ответов

Рейтинг:
2

OriginalGriff

Проверьте в режиме конструктора, затем щелкните правой кнопкой мыши экземпляр в приведенном выше коде и выберите "Найти все ссылки" - это даст вам список везде в коде, где он используется. Если вы не видите его там, спросите своего начальника - он предоставил код, чтобы он мог указать вам правильное направление.


Sandeep Mewara

Это дополнение управления временем выполнения.

CHill60

Вот почему Грифф сказал: "это даст вам список везде в коде он используется" - если он добавляется во время выполнения, то он должен быть где-то в коде :-)

Sandeep Mewara

Да. Намерение состояло только в том, чтобы поделиться тем, что ОП не читал код.

OriginalGriff

Именно поэтому я и поставил их в таком порядке! :смеяться:

Sandeep Mewara

Рейтинг:
18

Sandeep Mewara

Цитата:
Разве это не видно и перед бегом??? Он должен быть показан в нижней части формы, например "menustrip1".

Ну, это потому, что вы предполагаете/ожидаете, что эта полоса меню будет временем разработки, размещенным на форме.

Посмотрите на код, и вы поймете, что этот menustrip, о котором вы говорите, генерируется во время выполнения и добавляется в форму. Таким образом, вы не видите его перед запуском в качестве элемента управления, сидящего в вашей дизайнерской форме.

//Creating object of MenuStrip class
mnuStrip = new MenuStrip();

//Placing the control to the Form
pnl_menu.Controls.Add(mnuStrip);


Вам нужно научиться читать код, а также отлаживать его.
Попробуйте: Отладка в Visual Studio - Visual Studio | Microsoft Docs[^]


Richard MacCutchan

- Тебе нужно научиться читать код."
Кататься по полу от смеха! :) :)