C#/.NET messagebox не модален

Я использую SQL, СОЗДАЮТ сценарии, экспортируемые из MySQL Workbech, затем с помощью их "SQL Экспорта ИЗМЕНЯЕТ" функциональность, которой я заканчиваю с серией, создают сценарии (пронумерованный, конечно) и изменить сценарии, которые могут применить изменения между ними.

3. - SQL экспорта обычно ИЗМЕНЯЕТ сценарий, необходимо было бы записать операторы ALTER TABLE вручную теперь, отразив изменения, которые Вы внесли в модель. Но можно быть умными, и Инструментальные средства, которым позволяют, делают тяжелую работу для Вас. Просто выберите Файл->, Экспорт-> Передает SQL Инженера, ИЗМЕНЯЮТ Script†¦ из главного меню.

Это предложит Вам определять, что SQL СОЗДАЕТ файл, с которым должна сравниться текущая модель.

Выбор SQL СОЗДАЮТ сценарий из шага 1. Инструмент тогда генерирует сценарий ALTER TABLE для Вас, и можно выполнить этот сценарий против базы данных для осовременивания его.

можно сделать это использование MySQL Query Browser или mysql клиента. Вуаля! Ваша модель и база данных теперь синхронизировались!

Источник: MySQL Workbench Community Edition: Руководство по Синхронизации Схемы

Все это пишет сценарий, конечно, находятся внутри при управлении версиями.

43
задан Peter Mortensen 26 October 2015 в 11:26
поделиться

6 ответов

Вам необходимо назначить свойство владельца MessageBox для главного окна пользовательского интерфейса (см. Третий конструктор).

59
ответ дан 26 November 2019 в 22:50
поделиться

Это простое новое приложение Windows Forms на C #:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string message = "You did not enter a server name. Cancel this operation?";
            string caption = "No Server Name Specified";
            MessageBoxButtons buttons = MessageBoxButtons.YesNo;
            DialogResult result;

            // Displays the MessageBox.
            result = MessageBox.Show(this, message, caption, buttons);
            if (result == DialogResult.Yes)
            {
                // Closes the parent form.
                this.Close();
            }
        }
    }
}

Как Дасти заявляет в своем ответе , окно сообщения является модальным диалоговым окном. Укажите свойство «владелец». В этом примере владелец обозначается ключевым словом this.

12
ответ дан 26 November 2019 в 22:50
поделиться

Вы можете использовать параметр владельца, чтобы указать конкретный объект, который реализует интерфейс IWin32Window , чтобы поместить окно сообщения перед.

Окно сообщения модальный диалог, что означает, что ввод (клавиатура или щелчок мышью) не может происходить, кроме как для объектов в модальной форме. Программа должна скрыть или закрыть модальную форму (обычно в ответ на какое-либо действие пользователя), прежде чем может произойти ввод в другую форму.

MessageBox.Show Method

5
ответ дан 26 November 2019 в 22:50
поделиться

Модальное всплывающее окно технически определяется как всплывающее окно, которое прерывает нормальный поток приложения ... не обязательно то, что остается поверх всех других окон, поэтому поведение, которое вы описываете, является правильным для модального всплывающего окна.

Модальное окно

Вот проект на CodeProject, который пытается имитировать функцию «всегда сверху» для модального окна в стиле MessageBox:

CodeProject: TopMost MessageBox

6
ответ дан 26 November 2019 в 22:50
поделиться
public static System.Windows.Forms.DialogResult WW_MessageBox(string Message, string Caption,
        System.Windows.Forms.MessageBoxButtons buttons, System.Windows.Forms.MessageBoxIcon icon,
        System.Windows.Forms.MessageBoxDefaultButton defaultButton)
    {
        System.Windows.Forms.MessageBox.Show(Message, Caption, buttons, icon, defaultButton,
            (System.Windows.Forms.MessageBoxOptions)8192 /*MB_TASKMODAL*/);

    }
-2
ответ дан 26 November 2019 в 22:50
поделиться

Сделайте так, чтобы окно сообщения отображалось в основном потоке, если ваша форма была создана на его основе:

private bool ShowMessageBoxYesNo()
{
    if (this.InvokeRequired)
        return (bool)this.Invoke(new ShowMessageBoxYesNoDelegate(ShowMessageBoxYesNo));
    else
    {
        DialogResult res = MessageBox.Show("What ?", "Title", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (res == DialogResult.Yes)
            return true;
        else
            return false;
    }
}
0
ответ дан 26 November 2019 в 22:50
поделиться
Другие вопросы по тегам:

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