DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォーカス表示させないためには?

環境/言語:[環境(WindowsXP)、使用言語(VB.NET)]
分類:[.NET]

始めまして。今、VB.NETつかってPCにもともとはいっている電卓をまねて作成しているのですが、表示画面をTextBoxにしているのですが、フォーカスをみえないようにするためにはどうすればいいのでしょうか?
初心者なもんでいまいちわかんないです。
よろしくお願いします。
■No12658に返信(とおるさんの記事)
> 始めまして。今、VB.NETつかってPCにもともとはいっている電卓をまねて作成しているのですが、表示画面をTextBoxにしているのですが、フォーカスをみえないようにするためにはどうすればいいのでしょうか?
> 初心者なもんでいまいちわかんないです。
> よろしくお願いします。

Labelコントロールを使ってはどうでしょうか??
■No12659に返信(Mooさんの記事)
> ■No12658に返信(とおるさんの記事)
>>始めまして。今、VB.NETつかってPCにもともとはいっている電卓をまねて作成しているのですが、表示画面をTextBoxにしているのですが、フォーカスをみえないようにするためにはどうすればいいのでしょうか?
>>初心者なもんでいまいちわかんないです。
>>よろしくお願いします。
>
> Labelコントロールを使ってはどうでしょうか??

ありがとうございます。Labelも考えたのですが、もとの電卓nほうはたぶん
textになってるんですよ。
だから、textにこだわりたくて。。。
■No12660に返信(とおるさんの記事)
>>Labelコントロールを使ってはどうでしょうか??
>
> ありがとうございます。Labelも考えたのですが、もとの電卓nほうはたぶん
> textになってるんですよ。
> だから、textにこだわりたくて。。。

フォーカスをフォーカスをみえないようにするとは,
Enabled = Falseにすると言う事ですか?
(文字色は変わってしまいますが。)

もし,TextBoxの見た目だけにこだわっているのであれば,
Labelでも,BorderStyle=Fixed3Dで,BackColorを適当な色に設定すれば
それっぽく見えますね…。
こんにちは、じゃんぬ です。

■No12662に返信(なおこ(・∀・)さんの記事)
> フォーカスをフォーカスをみえないようにするとは,
> Enabled = Falseにすると言う事ですか?
> (文字色は変わってしまいますが。)

いや、多分「カレットを隠す」ということが言いたいのだと思います。
フォーカスを見えないようにするだと、FocusCues... まあいいや。

多分こういうことですよ。
http://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=22919

> もし,TextBoxの見た目だけにこだわっているのであれば,
> Labelでも,BorderStyle=Fixed3Dで,BackColorを適当な色に設定すれば
> それっぽく見えますね…。

または、BorderStyle:=None で、枠線は TextBox のソレを使うとかね。
■No12664に返信(じゃんぬねっとさんの記事)
> または、BorderStyle:=None で、枠線は TextBox のソレを使うとかね。

…それはまたトリッキーですね。
■No12667に返信(なおこ(・∀・)さんの記事)
> …それはまたトリッキーですね。

流石に TextBox 自体を使えとは言いませんよ。
そう見える何かを配置しておくのが 1 番スマートでかつ最適でしょう。
TextBox にしか見えないコントロール上に文字があって (実際には Label) で、
フォーカスは遷移しない、グレーダウンはしない、電卓のソレができるわけです。

電卓のソレと同じにしたいのであれば、Cursor を I ビームにしておく必要がありますね。
みなさんありがとうございます。。
なんせ初心者なもんで、いまいちわかんないことだらけです。
Iビーム?カレット?リッチテキストボックス?ん〜?みたいな感じです。
くわしく教えていただけないでしょうか?
すみません。よろしくお願いします。
■No12676に返信(とおるさんの記事)
> みなさんありがとうございます。。
> なんせ初心者なもんで、いまいちわかんないことだらけです。
> Iビーム?カレット?リッチテキストボックス?ん〜?みたいな感じです。
> くわしく教えていただけないでしょうか?
> すみません。よろしくお願いします。
フォームにTextBoxを1つButtonを0〜9まで10コ配置して
以下の様な感じでどうですかね?

    Public Shared Sub Main()

        Application.EnableVisualStyles()
        Application.Run(New Form1)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim mecon As Control

        For Each mecon In Me.Controls
            Select Case TypeName(mecon)
                Case "TextBox"
                    AddHandler DirectCast(mecon, TextBox).Enter, AddressOf subDelCaret

                Case "Button"
                    DirectCast(mecon, Button).FlatStyle = FlatStyle.System
                    AddHandler DirectCast(mecon, Button).Enter, AddressOf subDelCaret
            End Select
        Next

    End Sub

    Private Sub subDelCaret(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Select Case TypeName(sender)
            Case "Button"
                Button_Click(sender, e)
        End Select

        ActiveControl = Nothing
    End Sub

    Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        TextBox1.Text = DirectCast(sender, Button).Text
    End Sub
ありがとうございます。なかなかうまくいかないのでラベル表示にさせることにしました。
またなにかあったらよろしくおねがしします。
こんにちは、じゃんぬ です。

■No12699に返信(とおるさんの記事)
> ありがとうございます。なかなかうまくいかないのでラベル表示にさせることにしました。
> またなにかあったらよろしくおねがしします。

それじゃ、このスレッドの意味が薄れますね...

■No12676に返信(とおるさんの記事)
> なんせ初心者なもんで、いまいちわかんないことだらけです。
> Iビーム?カレット?リッチテキストボックス?ん〜?みたいな感じです。
> くわしく教えていただけないでしょうか?

初心者かどうかではなく、調べようとしました?
調べているのであれば、何がわからないのかをもっと明示化できるハズです。
言葉の意味なんて、Google でいくらでもヒットしますよね。
http://www.google.co.jp/search?hl=ja&q=I%E3%83%93%E3%83%BC%E3%83%A0%E3%81%A8%E3%81%AF&lr=

では、この際 PictureBox コントロールを使って説明しましょう。

 1. PictureBox コントロールをフォームに配置する。
 2. PictureBox コントロールの BorderStyle を Fixed3D にする。
 3. PictureBox コントロールの BackColor を [Window] にする。

これで TextBox に見える PictureBox が完成してませんか?
次に Label コントロールです。

 1. Label コントロールをフォームに配置する。
 2. Label コントロールの BackColor を [Window] にする。
 3. Cursor プロパティを IBeam にする。

画面デザイナだけで、出来てしまったわけですが...
先に私が "回答" した通りの "解答" になります。
> ありがとうございます。なかなかうまくいかないのでラベル表示にさせることにしました。
> またなにかあったらよろしくおねがしします。

せっかく考えたのにあんまりなコトにしょんぼりしちゃいました。
難しかった?自分には理解不能っぽいんで楽な道を選択しちゃった?


ここから-------------------------------------------------------------------------
Public Shared Sub Main()

'アプリケーションで Windows XP のビジュアル スタイルを有効にする。
System.Windows.Forms.Application.EnableVisualStyles()
System.Windows.Forms.Application.Run(New Form1)

End Sub

Private Sub TextBox1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Enter
'カレットを非表示にする(ってかソースを見たまんま、アクティブコントロールをなくす)
ActiveControl = Nothing
End Sub
ここまで-------------------------------------------------------------------------

前回のコードより簡単にしてみました。
フォームにTextBox1というNameのテキストボックスを配置して上記コードを貼り付けてみて。


Application.EnableVisualStyles()ってNET Framework Version 1.1からか…
すみません。自分の説明のしかたが悪かったみたいです。
楽をしようと調べもせずに人にすぐに聞いてしまいました。
伝言板に書いたあと自分なりに言葉の意味とかは調べました。
じゃんぬさんやみそさんから教えてもらった方法を試し、解決しました。
その結果自分なりの考えで、ラベルのほうが今はいいと思って、
> ありがとうございます。なかなかうまくいかないのでラベル表示にさせることにしました。
> またなにかあったらよろしくおねがしします。
こんなの書いてしまいました。すみません。
フォーム上にはてきすとボックスと、ラベル両方から表示できるようになってます。
ありがとうございます。

DOBON.NET | プログラミング道 | プログラミング掲示板