WPF показ диалогового окна перед главным окном

Вынутый прямо из JTree API

 // If you are interested in detecting either double-click events or when a user clicks on a node, regardless of whether or not it was selected, we recommend you do the following:

 final JTree tree = ...;

 MouseListener ml = new MouseAdapter() {
     public void mousePressed(MouseEvent e) {
         int selRow = tree.getRowForLocation(e.getX(), e.getY());
         TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
         if(selRow != -1) {
             if(e.getClickCount() == 1) {
                 mySingleClick(selRow, selPath);
             }
             else if(e.getClickCount() == 2) {
                 myDoubleClick(selRow, selPath);
             }
         }
     }
 };
 tree.addMouseListener(ml);

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

42
задан Dave Clemmer 18 August 2011 в 16:28
поделиться

3 ответа

Хорошо, извиняюсь, вот решение:

Мой первоначальный вопрос почти сработал, нужно добавить только одно: удалить StartupUri из приложения XAML и после этого добавьте Показать в главное окно.

То есть:

<Application x:Class="DialogBeforeMainWindow.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Startup="Application_Startup">

Выше, StartupUri удален .

Добавьте myMainWindow.Show () также:

public partial class App : Application
{

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        Window1 myMainWindow = new Window1();
        DialogWindow myDialogWindow = new DialogWindow();
        myDialogWindow.ShowDialog();
        myMainWindow.Show();
    }

}
]
6
ответ дан 26 November 2019 в 23:39
поделиться

Итак, вы хотите показать одно окно, затем другое, но закрыть приложение, когда это окно закрыто? Возможно, вам потребуется установить ShutdownMode на OnMainWindowClose и установить MainWindow на Window1, в соответствии со строками ok:

Window1 myMainWindow = new Window1();
Application.Current.ShutdownMode = ShutdownMode.OnMainWindowClose;
Application.Current.MainWindow = myMainWindow;
DialogWindow myDialogWindow = new DialogWindow();
myDialogWindow.ShowDialog();
2
ответ дан 26 November 2019 в 23:39
поделиться

вот, сделайте это вот так. это фактически изменит ваше главное окно и будет работать должным образом без изменения настроек объекта приложения.

не забудьте удалить обработчик событий для запуска приложения и установить StartupUri в файле app.xaml.

public partial class App : Application
{
   bool init = false;
   protected override void OnActivated(EventArgs e)
   {
      base.OnActivated(e);
      if (!init)
      {
         this.MainWindow.Closing += new System.ComponentModel.CancelEventHandler(MainWindow_Closing);
         init = true;
      }
   }

   void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
   {
      Window toClose = this.MainWindow;
      this.MainWindow = new Window2();
      this.MainWindow.Show();
   }
}
0
ответ дан 26 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

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