2013-05-17 6 views
5

を移動:C#WPF私は<code>Window</code>に次のパラメータを追加したウィンドウ

WindowStyle="None" 
WindowStartupLocation="CenterScreen" 
AllowsTransparency="True" 
ResizeMode="NoResize" Background="Transparent" 

そして今、私はWindowを移動することはできませんので、私は私のWindowに次のコードの部分を追加しました:

#region Window: Moving 

private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    DragMove(); 
} 

#endregion 

また、私は私のWindowの私XAMLコードは(WindowPolygonのように見える)以下であることを指定する必要があります。

<Window Title="New Science" 
    Height="588" Width="760" MinHeight="360" MinWidth="360" 
    WindowStyle="None" WindowStartupLocation="CenterScreen" 
    AllowsTransparency="True" 
    ResizeMode="NoResize" Background="Transparent" 
    xmlns:my="clr-namespace:Bourlesque.Lib.Windows.Media;assembly=Bourlesque.Lib.Windows.Media"> 
    <Grid> 
     <my:UniPolygon DefaultRadiusIn="10" DefaultRadiusOut="10" Fill="#FF92C2F2" Name="m_tPlgOuter" Offset="0" Points="   0;26;;   10;19;10;;   10;0;;   265;0;20;;   290;20;20;;   -60,1;20;3;;   -60,1;5;10;;   -40,1;5;10;;   -40,1;20;2.5;;   -35,1;20;2.5;;   -35,1;5;10;;   -15,1;5;10;;   -15,1;20;3;;   0,1;20;;   0,1;0,1;;   0;0,1;;  " Stretch="None" Stroke="#FF535353" StrokeThickness="0.1" /> 
    </Grid> 
</Window> 

Windowマウスドラッグで位置を変更するにはどうしたらいいですか?また、コントロールやその他のものをサイズ変更するために追加するものは何ですか?サイズを変更するにはこのコードが見つかりました。私は良いかどうかを知りたいですhere)。

private bool clicado = false; 
private Point lm = new Point(); 
void PnMouseDown(object sender, MouseEventArgs e) 
{ 
    clicado = true; 
    this.lm = MousePosition; 
} 

void PnMouseUp(object sender, MouseEventArgs e) 
{ 
    clicado = false; 
} 

void PnMouseMove(object sender, MouseEventArgs e) 
{ 
    if(clicado) 
    { 
     this.Left += (MousePosition.X - this.lm.X); 
     this.Top += (MousePosition.Y - this.lm.Y); 
     this.lm = MousePosition; 
    } 
} 

答えて

4

:あなたが問題を抱えている場合、私はプロジェクトに次のコードを使用しWinFormsの中でウィンドウを移動するために、とにかく http://cloudstore.blogspot.com.br/2008/06/moving-wpf-window-with-windowstyle-of.html

は、便利です答えは、バギー。それはあなたのコントロールを外れるようになります。

は私の変更を試してみてください。

private bool clicado = false; 
private Point lm = new Point(); 
void PnMouseDown(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    clicado = true; 
    this.lm = System.Windows.Forms.Control.MousePosition; 
    this.lm.X = Convert.ToInt16(this.Left) - this.lm.X; 
    this.lm.Y = Convert.ToInt16(this.Top) - this.lm.Y; 
} 

void PnMouseUp(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    clicado = false; 
} 

void PnMouseMove(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    if (clicado) 
    { 
     this.Left = (System.Windows.Forms.Control.MousePosition.X + this.lm.X); 
     this.Top = (System.Windows.Forms.Control.MousePosition.Y + this.lm.Y); 
    } 
} 

それはあなたのカーソルにあなたの移動スティックを取得します(///▽///)

2

良いコードの例:見つかり

3

@Marcio WPFにはのWindows.Formsはありません。

私はそれがあるかどうかわからない(別の解決策を試してみましたが、働いてきたWPF、

private bool clicked = false; 
private Point lmAbs = new Point(); 
void PnMouseDown(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    clicked = true; 
    this.lmAbs = e.GetPosition(this); 
    this.lmAbs.Y = Convert.ToInt16(this.Top) + this.lmAbs.Y; 
    this.lmAbs.X = Convert.ToInt16(this.Left) + this.lmAbs.X; 
} 

void PnMouseUp(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    clicked = false; 
} 

void PnMouseMove(object sender, System.Windows.Input.MouseEventArgs e) 
{ 
    if (clicked) 
    { 
    Point MousePosition = e.GetPosition(this); 
    Point MousePositionAbs = new Point(); 
    MousePositionAbs.X = Convert.ToInt16(this.Left) + MousePosition.X; 
    MousePositionAbs.Y = Convert.ToInt16(this.Top) + MousePosition.Y; 
    this.Left = this.Left + (MousePositionAbs.X - this.lmAbs.X); 
    this.Top = this.Top + (MousePositionAbs.Y - this.lmAbs.Y); 
    this.lmAbs = MousePositionAbs; 
    } 
} 

敬具、

レックス

0

で動作するように、このバージョン(安定した)を得ました最も正確だが)

private void GridOfWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     var move = sender as System.Windows.Controls.Grid; 
     var win = Window.GetWindow(move); 
     win.DragMove(); 
    } 

ここで、GridOfWindowはグリッドの名前

<Grid x:Name="GridOfWindow" MouseLeftButtonDown="GridOfWindow_MouseLeftButtonDown"> 
関連する問題