C# WPF Фокусирование окна

110
05 октября 2019, 16:40

У меня есть окно с кастомным Window Chrome сделаном на Grid которая обрабатывает два события:

private void OnTitleBarMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) {
  switch(e.LeftButton) {
    case MouseButtonState.Pressed: {
      this.DragMove();
      break;
    }
  }
}

private void OnTitleBarMouseMove(object sender, System.Windows.Input.MouseEventArgs e) {
  switch(e.LeftButton) {
    case MouseButtonState.Pressed: {
      var point = this.PointToScreen(e.MouseDevice.GetPosition(this));
      this.Left = point.X - (this.RestoreBounds.Width * 0.55);
      this.Top = point.Y - 20;
      this.WindowState = WindowState.Normal;
      this.DragMove();
      break;
    }
  }
}

и получается если вне окна зажать ЛКМ е вести на TitleBar окна оно начнет DragMove

как сделать чтобы окно двигалось только тогда когда оно в фокусе?

Answer 1

Вот такой минимальный код работает у меня:

<Window x:Class="WpfTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        WindowStyle="None" Width="300" Height="200">
    <Grid>
        <Grid Background="Blue" VerticalAlignment="Top" MouseLeftButtonDown="Grid_MouseLeftButtonDown">
            <TextBlock Text="Header" Foreground="Yellow" FontWeight="Bold"/>
        </Grid>
    </Grid>
</Window>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        DragMove();
    }
}

Ничего дополнительно писать не требуется

READ ALSO
Как в DataGridView отключить вставку новых строк?

Как в DataGridView отключить вставку новых строк?

Работаю с DataGridView программно, и вставку новых строк с клавиатуры нужно отключитьПри этом редактирование ячеек типа DataGridViewTextBoxColumn и DataGridViewCheckBoxColumn...

118
Ошибка при url-кодировании C#

Ошибка при url-кодировании C#

Нужно из xml-шаблона сформировать запрос с применением base64UrlEncodeДля этого пробовал использовать библу Microsoft

123
Открыть WhatsApp с параметром

Открыть WhatsApp с параметром

При запуске WhatsApp с параметром https://chatwhatsapp

235
Точка вместо запятой в DataGridView с типом данных Decimal в ячейках

Точка вместо запятой в DataGridView с типом данных Decimal в ячейках

При работе в DataGridView данные с типом Decimal отображаются с запятой, можно ли настроить проект или DataGridView, так что бы он работал с точками?

153