tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7236
投稿日: 2008/03/22(Sat) 15:14
投稿者よっくん
こんにちは。

VB2005 XPpro

ボタンのスタイルをフラットにして
BackgroundImageで画像をはめ込んであるボタンなのですが、
クリックした時(フォーカスがセットされた時)に
枠線が表示されます。

これを何とかして消したいのですが良い方法はあるのでしょうか?
最悪、PictureBoxで作り直そうかとも考えているのですが
数が多いので何とかならないかと やきもきしております。

何か良い方法がありましたらご教示下さい。
宜しくお願いいたします。

[ツリー表示へ]
タイトル【追記】ボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7237
投稿日: 2008/03/22(Sat) 15:17
投稿者よっくん
> こんにちは。
> > VB2005 XPpro
> > ボタンのスタイルをフラットにして
> BackgroundImageで画像をはめ込んであるボタンなのですが、
> クリックした時(フォーカスがセットされた時)に
> 枠線が表示されます。
> > これを何とかして消したいのですが良い方法はあるのでしょうか?
> 最悪、PictureBoxで作り直そうかとも考えているのですが
> 数が多いので何とかならないかと やきもきしております。
> > 何か良い方法がありましたらご教示下さい。
> 宜しくお願いいたします。

すみません。追記です。
FlatAappearanceのBorderSizeの事ではありませんので…。
ボタンの内側に出てくる枠線の事です。

宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: 【追記】ボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7238
投稿日: 2008/03/22(Sat) 16:09
投稿者かさのば
これでどうでしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26057&forum=7

[ツリー表示へ]
タイトルRe^2: 【追記】ボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7239
投稿日: 2008/03/22(Sat) 17:14
投稿者よっくん
かさのば様

アドバイスありがとうございます。

・ShowFocusCuesをオーバーライドさせる

という事はわかったのですが、具体的にどうやって
オーバーライドさせれば良いのかわかりません。


---------------------------------------------------------------------
Visual Basic (宣言)
Protected Friend Overrides ReadOnly Property ShowFocusCues As Boolean
---------------------------------------------------------------------

---------------------------------------------------------------------
Visual Basic (使用法)
Dim value As Boolean

value = Me.ShowFocusCues
---------------------------------------------------------------------

という形でヘルプに載っていたのですが
・Protected Friend Overrides ReadOnly Property ShowFocusCues As Boolean
この文章を打つとエラーが出まくります。
(宣言)とあるので、Option Explicit On と同じ場所に書くのかな〜と思ったのですが
「名前空間のステートメントが無効です」と出てしまいます。

すみませんが、
Protected Friend Overrides ReadOnly Property ShowFocusCues As Boolean
をどこに打てばいいのか どなたかご教示頂けないでしょうか。

宜しくお願い致します。

[ツリー表示へ]
タイトルRe^3: 【追記】ボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7240
投稿日: 2008/03/22(Sat) 18:36
投稿者るしぇ
> すみませんが、
> Protected Friend Overrides ReadOnly Property ShowFocusCues As Boolean
> をどこに打てばいいのか どなたかご教示頂けないでしょうか。
継承したクラス内に書きます。

そうなると『継承とは?』ってなると思いますが、
http://dobon.net/vb/dotnet/control/numerictextbox.html
↑MyTextBox が TextBox を丸々継承しているサンプルです。

[ツリー表示へ]
タイトルRe^4: 【追記】ボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7241
投稿日: 2008/03/22(Sat) 19:18
投稿者よっくん
るしぇ様

アドバイスありがとうございます。
継承がなんとなくしかわかっていないのですが、
サンプルを元に記述してみたところ
今度は違うエラーが出ました。

-------------------------------------------------------------------------------
Public Class CMDBTN
    Inherits Button

    Protected Friend Overrides ReadOnly Property ShowFocusCues() As Boolean

        Get
            Dim value As Boolean

            value = Me.ShowFocusCues

        End Get

    End Property
End Class
-------------------------------------------------------------------------------

上記のように記述したところ、

'Protected Friend Overrides ReadOnly Property ShowFocusCues() As Boolean' と
'Protected Overridable ReadOnly Property ShowFocusCues() As Boolean' には、
異なるアクセス レベルが指定されているため、
'Protected Friend Overrides ReadOnly Property ShowFocusCues() As Boolean' で 'Protected Overridable ReadOnly Property ShowFocusCues() As Boolean' を
オーバーライドすることはできません。

というエラーが出ました。
あとちょっとでいけそうな気がするのですが…orz

すみませんが、どなたか悪い箇所を指摘頂けますでしょうか。
宜しくお願い致します。

[ツリー表示へ]
タイトルRe^5: 【追記】ボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7242
投稿日: 2008/03/22(Sat) 19:49
投稿者るしぇ
アクセス レベルが違うというのは
Friend のところです。Public とか Private とかアクセスできる範囲が
違うと定義が食い違ってるから、上書きしろって言われても困るんだよ
っていうエラーです。

[ツリー表示へ]
タイトルRe^6: 【追記】ボタンをクリックしたとき(フォーカスがセットされた状態)の枠線を消したい
記事No7248
投稿日: 2008/03/24(Mon) 14:55
投稿者よっくん
るしぇ様

アドバイスありがとうございます。
Frendを消して

Protected Overrides ReadOnly Property ShowFocusCues() As Boolean

でエラーが出なくなりました。


----------------------------------------------------
    Public Class CMDBTN
        Inherits Button

        Protected Overrides ReadOnly Property ShowFocusCues() As Boolean

            Get
                Dim value As Boolean
                value = Me.ShowFocusCues

            End Get

        End Property
    End Class
----------------------------------------------------------------

という形になってエラーも出ない代わりに
枠線も消えませんでした…。

色々調べてみると
「常にfalseを返す」ように作ればよいとの事だったので
----------------------------------------------------------------
            Get
                Dim value As Boolean
                value = Me.ShowFocusCues

                Return False

            End Get
----------------------------------------------------------------

なんて形で書いてみたのですが結局枠線は消えず…
ShowFocusCuesの使い方サンプルを探しても見つけられず…orz

あと何が足りないのか、どなたかご指摘頂けないでしょうか。
宜しくお願い致します。

[ツリー表示へ]
タイトルRe^5: ボタンをクリックしたときの枠線
記事No7249
投稿日: 2008/03/24(Mon) 16:19
投稿者y4yama
こんちは。興味があったのでやってみました
VB2005で
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim bt1 As New CMDBTN
        Me.Controls.Add(bt1)
        bt1.FlatStyle = FlatStyle.Flat
        bt1.Text = "aa"
        bt1.Left = 120
    End Sub
End Class

Public Class CMDBTN
    Inherits Button
    Protected Overrides ReadOnly Property ShowFocusCues() As Boolean
        Get
            ShowFocusCues = False
        End Get
    End Property
End Class
としたら、中に2重にでる枠は、外だけになりましたよ。参考になれば・・・

[ツリー表示へ]
タイトルRe^6: ボタンをクリックしたときの枠線
記事No7250
投稿日: 2008/03/24(Mon) 17:19
投稿者よっくん
y4yama様

サンプルコードありがとうございます。

自分自身でも、新しいプロジェクトを作って
試したところ、希望通りに枠線が消えておりました。

ちなみにこれは、コード記述で作成したボタンにしか
継承させる事はできないのでしょうか?

サンプルコードにデザイナ画面でボタンを1つ追加してみましたが
継承されずにふつーのボタンになりました。
(当然の事なんだとは思うのですが このサンプルで初めて気がつきました…)

デザイナ画面で作ったボタンに継承させるテクニックみたいなものは
存在するのでしょうか?
無いならやはり、1から全部のボタンをコードで作り直す必要があるのでしょうか…。

もしデザイナ画面で作ったボタンに継承を適用させるテクニックがあるのであれば
どなたかアドバイスをお願い致します。

[ツリー表示へ]
タイトル【解決】Re^7: ボタンをクリックしたときの枠線
記事No7251
投稿日: 2008/03/24(Mon) 18:32
投稿者よっくん
自己解決しました。

ソリューションエクスプローラーからフォームを展開して
Form1.Desiner.vbの記述を変更したらできました。

かさのば様・るしぇ様・y4yama様
皆様のおかげでやっと完成しました。
ありがとうございました。

VB2005 難しいですね…orz

[ツリー表示へ]