
いつもお世話になります。
WPFでボタンをWindow内で移動したいです。
xaml
<Window x:Class="swipe.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="700" Width="525">
<Canvas Name="canvas"> <Image Name ="image" Source="C:\01.jpg" Stretch="None" MouseLeftButtonDown="object_MouseLeftButtonDown" MouseLeftButtonUp="object_MouseLeftButtonUp" MouseMove="object_MouseMove"
/>
<Button Height ="100"
MouseLeftButtonDown="object_MouseLeftButtonDown"
MouseLeftButtonUp="object_MouseLeftButtonUp"
MouseMove="object_MouseMove"
Click="button_Click"
>button</Button>
</Canvas>
</Window>
C#
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
namespace swipe {
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
}
private bool isDrag = false;
private Point dragOffset;
private Point startpoint;
private Point releasepoint;
/// <summary>
/// ドラッグ開始
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
UIElement element = sender as UIElement;
if (element != null) {
isDrag = true;
dragOffset = e.GetPosition(element);
startpoint = e.GetPosition(canvas);
element.CaptureMouse();
}
}
/// <summary>
/// ドラッグ終了
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void image_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) {
if (isDrag) {
UIElement element = sender as UIElement;
element.ReleaseMouseCapture();
releasepoint = e.GetPosition(canvas);
isDrag = false;
}
}
/// <summary>
/// ドラック中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void image_MouseMove(object sender, MouseEventArgs e) {
if (isDrag) {
Point point = Mouse.GetPosition(canvas);
UIElement element = sender as UIElement;
Canvas.SetLeft(element, point.X - dragOffset.X);
Canvas.SetTop(element, point.Y - dragOffset.Y);
}
}
private void Button_Click(object sender, EventArgs e) {
MessageBox.Show("click");
//ここでキャンセルすればいい?
}
}
}
という場合、imageは移動できるのですが、buttonはButtonDownイベントが発生せず、Clickになって移動できずにいます。
Buttonを移動するには、どのようにしたらよいか、ご示唆ください。
よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/12/03 00:55