2013-07-25 19 views
1

Я работаю над программой, которая содержит (помимо всего прочего) в окне WPF, для которого я использую следующий код, чтобы развернуть его на MouseDoubleClick Событие:Некоторые вопросы о Windows Presentation Foundation (C#)

 this.WindowStyle = WindowStyle.None;    
     this.WindowState = WindowState.Maximized;  
     this.Topmost = true; 

Теперь, что я хочу сделать, так это то, что когда окно максимизируется, и мышь выходит из экрана (идет в нижней части экрана, пока не выйдет из экрана), появится новое окно в нижней части экрана (WPF или WindowsForm), который будет содержать несколько вещей (кнопки, scrollBars и т. д.), и он будет активен только до тех пор, пока мышь над ним (как в BSplayer). Мой вопрос: как это сделать? Я действительно стартер с WPF, я не знаю XAML, и я бы предпочел сделать столько, сколько я могу использовать код C#. Итак: как узнать, когда мышь покидает экран и как я могу заставить это окно появляться в нижней части экрана (не сводя к минимуму или ничего не делать с исходным окном)? Я попытался использовать this.MouseLeave, но он не работает, когда окно максимально.

И если я задаю этот вопрос здесь, я буду использовать свой шанс и задать два других вещей:

  1. Когда окно WPF максимизируется и если мышь не перемещали в течение более чем 5 секунд, чем я хочу, чтобы мышь была скрыта и снова стала видимой только при перемещении мыши. Как мне это сделать ?
  2. Когда окно WPF не максимизировано, я хочу, чтобы граница экрана была очень маленькой, почти невидимой (без минимизации, закрытия или другой кнопки). Я использую this.WindowStyle = System.Windows.WindowStyle.ToolWindow, но он все еще оставляет кнопку выхода/закрытия; Если я использую this.WindowStyle = System.Windows.WindowStyle.None это выглядит идеально, но тогда я не могу переместить окно. Я все равно должен сделать окно подвижным с WindowStyle.None? Предпочтительно, когда я держу мышь нажатой во внутренней части экрана, я хочу, чтобы можно было перетащить окно WPF на моем экране.

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

+2

'Это очень важный проект, над которым я работаю.' - Если проект важен, вам лучше изучить XAML, а не избегать его. –

+0

@TheQuestioner Чтобы переключить видимость вашего окна «BSplayer», вы можете использовать триггер стиля или связать его с виртуальной машиной. Они могут быть запрограммированы на самом младшем уровне, так что сказал HighCore. Кривая обучения для Xaml составляет около 5 недель, если вы работаете над ней каждый день. –

+0

Один вопрос за раз. Так непонятно. И «мышь существует». Как же мышь не существует?Я знаю, что вы новичок в SO, но вам нужно будет убрать вопрос или закрыть его. – Paparazzi

ответ

1

Ответ на этот вопрос

Когда окно WPF максимизируется и если мышь не была перемещена в течение более 5 секунд, чем я хочу мышь, чтобы быть скрыта и стать видимыми только тогда, когда мышь движется. Как мне это сделать ?

Это может быть достигнуто с помощью таймера с интервалом в 5 секунд. Когда таймер истечет, установите курсор мыши на None, чтобы скрыть его, и когда мышь перемещается, верните курсор мыши в исходный.

Помещенные ниже кода в конструкторе:

this.MouseMove += new MouseEventHandler(MainWindow_MouseMove); 
     tm = new System.Timers.Timer(); 
     tm.Interval = 5000; 
     tm.Elapsed += new System.Timers.ElapsedEventHandler(tm_Elapsed); 
     tm.Start(); 

Ниже Defination события:

void MainWindow_MouseMove(object sender, MouseEventArgs e) 
    { 
     tm.Stop(); 
     tm.Start(); 

     // Reseting the time back to original. Here I have assumed that original one is Arrow. 
     this.Dispatcher.Invoke(new Action(() => 
     { 
      Mouse.OverrideCursor = Cursors.Arrow; 
     })); 
    } 

    void tm_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
    { 

     this.Dispatcher.Invoke(new Action(() => 
     { 
      if (Mouse.OverrideCursor != Cursors.None) 
      { 
       Mouse.OverrideCursor = Cursors.None; 
       currentCursor = Mouse.OverrideCursor; 
      } 
     })); 
    } 

Надеется, что это помогает !!

Смежные вопросы