Как определить, выполняется ли код .NET дизайнером Visual Studio - PullRequest
55 голосов
/ 16 сентября 2008

Я получаю некоторые ошибки в моем коде при открытии формы Windows Forms в конструкторе Visual Studio. Я хотел бы выполнить переход в моем коде и выполнить другую инициализацию, если форма открывается дизайнером, чем если бы она выполнялась по-настоящему.

Как я могу определить во время выполнения, выполняется ли код как часть дизайнера, открывающего форму?

Ответы [ 24 ]

0 голосов
/ 16 сентября 2008

Если вы находитесь в форме или элементе управления, вы можете использовать свойство DesignMode:

if (DesignMode)
{
        DesignMode Only stuff
}
0 голосов
/ 09 декабря 2008

Я обнаружил, что свойство DesignMode содержит ошибки, по крайней мере в предыдущих версиях Visual Studio. Следовательно, я сделал свою собственную, используя следующую логику:

Process.GetCurrentProcess().ProcessName.ToLower().Trim() == "devenv";

Что-то вроде хака, я знаю, но это хорошо работает.

0 голосов
/ 29 марта 2013
    /// <summary>
    ///  Whether or not we are being run from the Visual Studio IDE
    /// </summary>
    public bool InIDE
    {
        get
        {
            return Process.GetCurrentProcess().ProcessName.ToLower().Trim().EndsWith("vshost");
        }
    }
0 голосов
/ 05 марта 2013

Чтобы решить проблему, вы также можете написать код:

private bool IsUnderDevelopment
{
    get
    {
        System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess();
        if (process.ProcessName.EndsWith(".vshost")) return true;
        else return false;
    }

}
...