Как запустить приложение WinForm, минимизированное к лотку?

Кредит из-за @Blorgbeard для совместного использования его сценария. Я, конечно, отмечу его в случае, если мне нужен он.

Да, можно "щелкнуть правой кнопкой" по таблице и написать сценарий CREATE TABLE сценарий, но:

  • сценарий будет содержать загрузки из хлама (заинтересованный расширенными свойствами кто-либо?)
  • , Если Вы имеете 200 + таблицы в Вашей схеме, она собирается взять Вас половина дня для сценариев партии вручную.

С этим сценарием, преобразованным в хранимую процедуру и объединенным со сценарием обертки, у Вас был бы хороший автоматизированный способ вывести Ваш дизайн таблицы в управление исходным кодом и т.д.

, Остальная часть Вашего кода DB (SP, индексы FK, Триггеры и т.д.) будет являться объектом управления исходным кодом так или иначе;)

45
задан snoob dogg 21 March 2018 в 15:19
поделиться

2 ответа

Правильный способ сделать это - в первую очередь предотвратить отображение формы. Для этого требуется переопределение SetVisibleCore (). Предположим, есть контекстное меню для NotifyIcon с командой «Показать и выйти». Вы можете реализовать его так:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        notifyIcon1.ContextMenuStrip = contextMenuStrip1;
        this.showToolStripMenuItem.Click += showToolStripMenuItem_Click;
        this.exitToolStripMenuItem.Click += exitToolStripMenuItem_Click;
    }

    private bool allowVisible;     // ContextMenu's Show command used
    private bool allowClose;       // ContextMenu's Exit command used

    protected override void SetVisibleCore(bool value) {
        if (!allowVisible) {
            value = false;
            if (!this.IsHandleCreated) CreateHandle();
        }
        base.SetVisibleCore(value);
    }

    protected override void OnFormClosing(FormClosingEventArgs e) {
        if (!allowClose) {
            this.Hide();
            e.Cancel = true;
        }
        base.OnFormClosing(e);
    }

    private void showToolStripMenuItem_Click(object sender, EventArgs e) {
        allowVisible = true;
        Show();
    }

    private void exitToolStripMenuItem_Click(object sender, EventArgs e) {
        allowClose = true;
        Application.Exit();
    }
}

Обратите внимание на морщину с событием Load, оно не сработает, пока не будет показана основная форма. Поэтому обязательно выполняйте инициализацию в конструкторе формы, а не в обработчике события Load.

79
ответ дан 26 November 2019 в 21:01
поделиться

В конструкторе удалите эти две строки:

this.Visible = false;
this.ShowInTaskbar = false;

и добавьте после InitializeComponent (); :

this.WindowState = FormWindowState.Minimized;

В конструкторе установите ShowInTaskbar до false и FormWindowState до Нормальный .

РЕДАКТИРОВАТЬ: Если вы разместите то же самое в событии загрузки, окно будет свернуто, но все равно будет отображаться на рабочем столе в свернутом виде. Я думаю, что это ошибка.

17
ответ дан 26 November 2019 в 21:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: