質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

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

WPF

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

Q&A

解決済

1回答

1050閲覧

【WPF】MouseEnterの書き方について

input

総合スコア3

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

VB.NET

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

WPF

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

1グッド

0クリップ

投稿2022/03/05 11:02

VisualStudo2019
WPFアプリ(.NET Framework)VisualBasicにて開発を行っております。
MouseEnterにてボタンの色を#FF09094F( Color.FromArgb(79, 54, 79))に変えたいです。

MainWindow.xaml.vbに
https://dobon.net/vb/bbs/log3-7/3985.html
を参考に以下のコードを試しました。

Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter
Button1.Background= Color.FromArgb(79, 54, 79)
End Sub

これでは「'Public Shared Overloads Function FromArgb(a As Byte, r As Byte, g As Byte, b As Byte) As Color' のパラメーター 'b' に対して引数が指定されていません。」のエラーが出ます。

原色で試そうと
Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter
Button1.Background= Color.Red
End Sub
を試すと「'Red' は 'Color' のメンバーではありません。」のエラーがでます。

Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave
Background = New SolidColorBrush(Colors.Aqua)
End Sub

これはMouseEnterイベントは動くのですが、Window全体がAquaになります。

そこで
Private Sub btndetail_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave
Button1.Background = New SolidColorBrush(Colors.Aqua)
End Sub

を試すとMouseEnterイベント自体が動きませんでした。

初心者で勉強不足なのは承知しております。
お忙しいところ大変恐縮ではありますが、どなたかお助けいただけませんでしょうか。
できれば初心者でもわかるようにご教授いただければ幸いです。

よろしくお願いいたします。

TN8001👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

これでは「'Public Shared Overloads Function FromArgb(a As Byte, r As Byte, g As Byte, b As Byte) As Color' のパラメーター 'b' に対して引数が指定されていません。」のエラーが出ます。

https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.color.fromargb?view=windowsdesktop-6.0#system-windows-media-color-fromargb(system-byte-system-byte-system-byte-system-byte)
Color.FromArgbメソッドは、alpha, red, green, blueの4つの引数が必要になります。
Color.FromArgb(255, 79, 54, 79)とかになります。
(alphaは透明度を表すようで、透明にしない場合は255になります)
(79, 54, 79では「#FF09094F」の値とちょっと違うように見えます。再度ご確認いただいた方が良いかもしれません)

「'Red' は 'Color' のメンバーではありません。」のエラーがでます。

https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.colors.red?view=windowsdesktop-6.0
Colors.Red(ColorではなくColors)でしたらこのエラーは出ないですかね。
(別のエラーは出そうに思います・・)

これはMouseEnterイベントは動くのですが、Window全体がAquaになります。

Button1.MouseLeaveですので、MouseEnterは動いていないと思います。
マウスが外れた時に動いていると思います。

を試すとMouseEnterイベント自体が動きませんでした。

こちらもMouseEnterではなく、Button1.MouseLeaveと記述しているためだと思います。

まとめますと、次のようなコードになると思います。
(すみません、実際に動かしていませんので、雰囲気だけ見てください・・)

vb

1Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter 2 Button1.Background = New SolidColorBrush(Color.FromArgb(255, 79, 54, 79)) 3End Sub

https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.control.background?view=windowsdesktop-6.0#system-windows-controls-control-background

質問欄にご記載いただいている試した内容を見ますと、もう少しだけ注意してコードを確認すれば、質問しなくても十分ご自身で問題解決できる力があるように思いました。

投稿2022/03/05 11:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

input

2022/03/05 12:37

早急に解答いただき本当にありがとうございます。 >Color.FromArgbメソッドは、alpha, red, green, blueの4つの引数が必要になります。 理解できました。 >「#FF09094F」の値とちょっと違うように見えます 確認いたしました。失礼しました。 >Button1.MouseLeaveですので、MouseEnterは動いていないと思います。 失礼しました。MouseEnterでもためしましたが、動きませんでした.... ご回答いただいたとおりにコードを打つと 「BC30311型 'Color' の値を 'Color' に変換できません。」 のエラーがでてしまいたました。 https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.color.fromargb?redirectedfrom=MSDN&view=net-6.0#System_Drawing_Color_FromArgb_System_Int32_System_Int32_System_Int32_ を参考に(Int32 255, Int32 79, Int32 54, Int32 79)) を試すと 「コンマ、')'、または有効な式の継続文字が必要です。」と「'Integer' は構造体型であり、式として使用することはできません。」のエラーがでてしまいます。 あと、C#は未経験で良く理解できませんでした。 あと少しご教授いただけませんでしょうか?せっかくご解答いただいたのに、良い結果にならず申し訳ありません。 追記 職場環境的に上司に聞ける環境でなく、久々に人の優しさを感じました。笑 ありがとうございます。 また、基礎からの勉強不足を実感しているので、これが解決次第基礎から勉強しなおそうと決心しました。
退会済みユーザー

退会済みユーザー

2022/03/05 12:56

説明が不十分ですみません・・ > 「BC30311型 'Color' の値を 'Color' に変換できません。」 Colorの型の名前空間は何になっていますでしょうか? SolidColorBrushのコンストラクタはSystem.Windows.Media名前空間のColor型を受けつけますですので、こちらに合わせてみたらどうでしょうか? `Button1.Background = New SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 79, 54, 79)` https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.solidcolorbrush.-ctor?view=windowsdesktop-6.0#system-windows-media-solidcolorbrush-ctor(system-windows-media-color) (似たようなクラスでSystem.Drawing.Color型というものがあります) > (Int32 255, Int32 79, Int32 54, Int32 79)) を試すと 「コンマ、')'、または有効な式の継続文字が必要です。」と「'Integer' は構造体型であり、式として使用することはできません。」のエラーがでてしまいます。 こちらのInt32の部分は型の情報ですので、メソッドを呼び出す側で記述する必要はありません。 `(255, 79, 54, 79))`のように値だけ渡して呼び出す感じになります。 > あと、C#は未経験で良く理解できませんでした。 .NETのドキュメントはVB.NETとC#で共通ですが、コードがC#だけだったりしますね・・ これは慣れかもしれませんね・・ 不明な点がありましたらまたコメントください。
input

2022/03/05 13:45

詳細に、しかもわかりやすくご説明いただき本当にありがとうございます。 感謝いたします。 >Colorの型の名前空間は何になっていますでしょうか? Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Drawing.Brush Imports System.Windows.Forms Imports System.Windows.Media 以上を記載し、 Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter Button1.Background = New SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 79, 54, 79)) End Sub を試しました。 エラーコードはなくなり実行できたのですが、マウスをボタンにかざしても色が変化しませんでした,,,, Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnter Background = New SolidColorBrush(Colors.Aqua) End Sub でwindowのBackground は変わるので、MouseEnterイベントは発生確認できるのですが,,, お忙しいところ大変恐縮ですが、アドバイスいただければ幸いです。 何度もご解答いただき本当にありがとうございます。 >.NETのドキュメントはVB.NETとC#で共通ですが、コードがC#だけだったりしますね・・これは慣れかもしれませんね・・ 承知しました。まだまだですが、頑張ります。
退会済みユーザー

退会済みユーザー

2022/03/05 14:11

ごめんなさい、間違った回答をしてしまったようでした・・ 手元に試せる環境がないのですが、 次のリンク先の記事などを見ますと、 ボタンのマウスオーバーの際の背景色はデフォルトの色が強く出てしまうようで、 Backgroundを指定するだけではダメそうでした。 XAMLからStyleとかControlTemplateを使って実現するようですが、わかりますでしょうか。 http://gootara.org/library/2016/07/wpf-hvr.html https://livealoneblog.com/programming_wpf_button/
input

2022/03/05 16:01

>ボタンのマウスオーバーの際の背景色はデフォルトの色が強く出てしまうようで、Backgroundを指定するだけではダメそうでした。 そんな仕様があったのですね、、、 参考URLを試行錯誤して思った通りに動きました!明日が期限だったので今日はゆっくり寝れそうです。 今回は大変詳細に、わかりやすくご解答いただき本当にありがとうございました。 xg63ex2bさんに答えていただき本当によかったです。一人ではきっとまだ悩んでました! 根本的な基礎知識がかけていると感じたので、毎日継続して勉強に励もうと思いました。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2022/03/06 00:26

1:00まで・・お疲れ様です・・ 解決したようで良かったです。 お互い頑張っていきましょう!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問