🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1243閲覧

WPFで独自オブジェクトを作りたい

Display

総合スコア2

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/12/07 08:17

前提・実現したいこと

VB.NETで使用できる独自オブジェクトを作りたいため、WPFユーザーコントロールDLLを作成しています。
まずは習作としてトグルボタンを1個だけ貼ったプロジェクトを作りました。
マウスClick、マウスDOWN、マウスUPのイベント動作を実装しましたが、
マウスClickのイベントはビルドも動作も問題なく出来たのですが、
マウスDOWN/UPの定義で警告になってしまいます。
そのせいか、イベントも発行されていないようです。

どこを直せばイベントが発行されるようになるでしょうか?

発生している問題・エラーメッセージ

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 警告 BC40012 event 'KeyDown' は、ベース class 'UIElement' のメンバーと競合する 'KeyDownEvent' を暗黙的に宣言するため、event は 'Shadows' と宣言しなければなりません。 ColorButton C:\Users\-------\Documents\Visual Studio 2015\Projects\TglBtn\TglBtn\TglBtn.xaml.vb 17 アクティブ

該当のソースコード

<UserControl x:Class="TglBtn" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:TglBtn" mc:Ignorable="d" Height="27" Width="100">
<Grid Margin="0,0,230,284">
<ToggleButton x:Name="CBtn" Content="ToggleButton" HorizontalAlignment="Left" Height="27" Margin="0,0,-100,-28" VerticalAlignment="Top" Width="100"/>
</Grid>
</UserControl>

VB.NET2015 Imports System.Windows.Forms Public Class TglBtn Event Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Event MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) Event MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) Private Sub CBtn_Click(sender As Object, e As RoutedEventArgs) Handles CBtn.Click RaiseEvent Click(sender, e) End Sub Private Sub CBtn_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles CBtn.MouseDown RaiseEvent MouseDown(sender, e) End Sub Private Sub CBtn_MouseUp(sender As Object, e As MouseButtonEventArgs) Handles CBtn.MouseUp RaiseEvent MouseUp(sender, e) End Sub End Class

試したこと

警告メッセージにあるとおり、
Event MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs)
の行に「Shadows」を付加して
Shadows Event MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs)
と、したところ警告は消えたのですが、イベントは発行されていないようです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

マウスDOWN/UPの定義で警告になってしまいます。

警告の理由はUserControlに、既にMouseDownMouseUpイベントがあるからです。
UserControl クラス (System.Windows.Controls) | Microsoft Docs

解決法はShadowsの付加か、別の名前にすることです。

警告は消えたのですが、イベントは発行されていないようです。

チョイスしたイベントが悪かった?のですが、ボタンを右クリックすればイベントが来ていることを確認できます。
左クリックで来ないのはボタン類はClickイベント発行のため、MouseLeftButtonDown等は飲み込んでしまい発砲されない仕様になっています。

欲しい場合はPreviewMouseDown等、Previewが付くイベントにします。

投稿2020/12/07 12:48

編集2023/08/13 09:11
TN8001

総合スコア9855

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Display

2020/12/08 01:50

Shadows Event MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) Shadows Event MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs) Private Sub CBtn_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs) Handles CBtn.PreviewMouseDown RaiseEvent MouseDown(sender, e) End Sub Private Sub CBtn_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles CBtn.PreviewMouseUp RaiseEvent MouseUp(sender, e) End Sub 上記のように修正した結果、MouseDown/Upイベントが拾えるようになりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問