重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。VB2005での質問です。
VB6.0の時は、Frameの上にTextBoxを貼り付け、そのFrameのEnableをTrueにしたりFalseにしたりして、入力の規制をかけていました。
そうすると、TextBoxの外観を変えずに規制をかけることができましたし、入力項目のいくつかをひとつのFrameに乗せておけば、一度に全体を規制することができました。Frameもラインを消すことができましたので、見た目もきれいにできていたのですが、VB2005にはそのFrameがないようですが、同じような機能を持ったコントロールはないでしょうか。
GroupBoxを使用した場合、そのBoxのEnableをFalseにすると、上に乗せたTextBoxの色がグレーに変わってしまいますし、GroupBoxにはプロパティにBorderStyleが見当たらず、ラインを消す方法もわかりません。
とても困っています。よろしくお願いいたします。

A 回答 (3件)

連続投稿すみません。



考察が足りませんでした...
ただ Panel コントロールを使っただけではだめですね。
背景色は変更できないので、#1 さんの指定されている
URL の通り、前景色は自分で描画するか、
もしくは動的に Label 等のコントロールと摩り替えてみせる
しかなさそうです。

Private Sub Panel1_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.EnabledChanged
  If Not Me.Panel1.Enabled Then
    For Each ctrl As Control In Me.Panel1.Controls
      If TypeOf ctrl Is TextBox Then
        Dim t As TextBox = DirectCast(ctrl, TextBox)
        t.Enabled = True
        t.ReadOnly = True
        t.BackColor = System.Drawing.SystemColors.Window
      End If
    Next
  Else
    For Each ctrl As Control In Me.Panel1.Controls
      If TypeOf ctrl Is TextBox Then
        Dim t As TextBox = DirectCast(ctrl, TextBox)
        t.Enabled = True
        t.ReadOnly = False
      End If
    Next
  End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Me.Panel1.Enabled = Not Me.Panel1.Enabled
End Sub
    • good
    • 0
この回答へのお礼

具体的にコードまで書いてくださり、ありがとうございました。
現在VB6から2005に変えたばかりで、本を見ながらコーディングしているのですが、
なかなか目的とするコードが書けず(VB6の癖が出てしまいます)困っていました。
この方法ならパネルに乗せて複数のコントロールを規制できそうですね。
とてもわかりやすく、他でも応用ができそうで助かりました。
ありがとうございました。

お礼日時:2006/11/20 13:41

お世話になります。



Panel(System.Windows.Forms.Panel)
はいかがでしょうか。

参考URL:http://msdn2.microsoft.com/ja-jp/library/system. …
    • good
    • 0

> TextBoxの外観を変えずに規制をかけることができましたし


> そのBoxのEnableをFalseにすると、上に乗せたTextBoxの色がグレーに変わってしまいますし

VB6->VB.NETになった際、仕様が変更され、
このテクニック(コンテナコントロールのEnabled=Falseにしても、子コントロールの色が変わらない)
自体使えなくなりました。

> 同じような機能を持ったコントロールはないでしょうか
よって、どのコントロールをコンテナにしても、「できません」。

「色の問題」だけなら方法が無いわけではありません。
「ReadOnly」にするか、
「OnEnabledChanged」をオーバーライドして、自分で描画する
と言う方法です。

#他の方のサイトを紹介するのは心苦しいのですが・・・

参考URL:http://dobon.net/vb/dotnet/control/tbenabledfals …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
やはり、単純に操作するコントロールはなくなってしまったのですね。
見た目を変えず、入力だけ不可にしたいので、ReadOnlyを使用使用と思います。

お礼日時:2006/11/20 13:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!