Visual Basic 2008で開発しています。


コントロールの操作を無効にする手順を教えてください。

コントロールとは、具体的には、
DateTimePicker1などです。例えば
コントロールを操作する際に、時刻条件により、処理を無効にするなどです。

ボタンであれば、ボタンの中の構文で、exit subなどをすればよいのですが。。

サンプルコードなどがあれば、有難いです。よろしくお願いします。


回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/08/16 09:14:11
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:rsc96074 No.1

回答回数4505ベストアンサー獲得回数438

ポイント60pt

 Form1にDateTimePicker1コントロールとTimer1コンポーネントを設置して、下記のコードでどうでしょうか。EnabledプロパティをFalseにすると、無効になります。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 1000
        Timer1.Enabled = True
        DateTimePicker1.Enabled = False
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim myDate As Date = Now
        '1時10分から15分の間だけDateTimePicker1を有効にする
        If Hour(myDate) = 1 And (10 <= Minute(myDate) And Minute(myDate) <= 15) Then
            DateTimePicker1.Enabled = True
        Else
            DateTimePicker1.Enabled = False
        End If
    End Sub

End Class

http://q.hatena.ne.jp/answer ダミー

id:futurista

回答ありがとうございます。

大変、申し訳ありません。質問の仕方がまずかったようです。

時刻は気にしないでください。

コントロールにマウスでクリックする等して(イベントを発生させて)、かつ、

条件(判定条件)により、イベントを無効(イベントが無かったこと)にしたいということです。

DateTimePicker1よりも、CheckBoxの方がわかりやすいので、

CheckBoxで例をあげると、

①CheckBoxで、OFF→ONの操作を行う。

②操作のイベントを受けて、プログラムが起動する。

③プログラム内の判定条件により、OFF→ONを無効に(OFFのまま)にする。

としたいのです。

2010/08/13 08:21:58

その他の回答1件)

id:rsc96074 No.1

回答回数4505ベストアンサー獲得回数438ここでベストアンサー

ポイント60pt

 Form1にDateTimePicker1コントロールとTimer1コンポーネントを設置して、下記のコードでどうでしょうか。EnabledプロパティをFalseにすると、無効になります。

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 1000
        Timer1.Enabled = True
        DateTimePicker1.Enabled = False
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim myDate As Date = Now
        '1時10分から15分の間だけDateTimePicker1を有効にする
        If Hour(myDate) = 1 And (10 <= Minute(myDate) And Minute(myDate) <= 15) Then
            DateTimePicker1.Enabled = True
        Else
            DateTimePicker1.Enabled = False
        End If
    End Sub

End Class

http://q.hatena.ne.jp/answer ダミー

id:futurista

回答ありがとうございます。

大変、申し訳ありません。質問の仕方がまずかったようです。

時刻は気にしないでください。

コントロールにマウスでクリックする等して(イベントを発生させて)、かつ、

条件(判定条件)により、イベントを無効(イベントが無かったこと)にしたいということです。

DateTimePicker1よりも、CheckBoxの方がわかりやすいので、

CheckBoxで例をあげると、

①CheckBoxで、OFF→ONの操作を行う。

②操作のイベントを受けて、プログラムが起動する。

③プログラム内の判定条件により、OFF→ONを無効に(OFFのまま)にする。

としたいのです。

2010/08/13 08:21:58
id:yamaneroom No.2

回答回数1040ベストアンサー獲得回数61

ポイント10pt

イベントを発生させないという目的なら、ApplicationオブジェクトのEnableEventsプロパティをFalseにすればよい。

http://msdn.microsoft.com/ja-jp/library/cc409238.aspx

id:futurista

回答ありがとうございます。

イベントが発生することは問題ありません。(発生してもよい。)

イベントが発生させたうえ、判定した後に、有効/無効にしたいのです。

2010/08/13 13:06:55
  • id:rsc96074
     Form1にTextBox1とLabel1とCheckBox1を設置して、下記コードで何とか動くようです。テキストボックスに文字がないと無効。文字がある条件でチェックが変更するようになります。
    Public Class Form1

    Private Sub CheckBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckBox1.MouseDown
    If TextBox1.Text = "" Then
    CheckBox1.Enabled = False
    Else
    CheckBox1.Enabled = True
    End If

    CheckBox1.Enabled = True
    End Sub

    'テスト用
    Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    If Label1.Text = "1" Then Label1.Text = "0" Else Label1.Text = "1"
    End Sub
    End Class
  • id:futurista
    コメントありがとうございます。

    当方の意図としては、
    「無効にする」とは、コントロールを「*.Enable = False」にすることでは、
    無かったのですが。。。

    ただ、ご指摘の通り、
    コントロールをDisableにすることでも、仕様を達成することができるため、
    ご指摘の方法を参考に修正することにしました。
    (コントロールそのものをDisableにするとは盲点でした。)

    ご提案ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません