VB.Netで実行したときに
初期設定でラジオボタンに全くチェックが
入っていない状態にしたいのですが、
どうしてもフォーカスが当たってしまい
一番上のラジオボタンにチェックが入ってしまいます。

よろしければご教授お願いします。

Option1.Value=False
には設定しています。
(デザイン画面ではすべてのラジオボタンに
チェックは入っていません)

このQ&Aに関連する最新のQ&A

A 回答 (1件)

どういう用件でそのようなことをするのか分かりませんが、そういう場合はチェックボックスを使うのではないですか?



どうしてもというなら、

隠し(サイズ0)のラジオボタンを貼り付けてそっちをTrueにしておくのはどうですか?
    • good
    • 0
この回答へのお礼

ご回答有り難うございました。
Form_Activate()の中に
Option1.Enable=False
にしたらうまくできました。

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

お礼日時:2005/04/08 08:51

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

QTextBoxでEnterキーを押すと、にあるButtonを押したのと同じ効果を出す方法

VB初心者です。
まだ、はじめたばかりなので、上手く質問を説明できませんが、よろしくお願いします。

環境はVisualBasic .net 2003です。

フォームにテキストボックス(TextBox)とボタン(Button)があります。
テキストボックス内でEnterキーを押すと、ボタン(Button)を押したのと同様の効果をだしたいのですが。
VC++6.0だと、SendMessage(WM_COMMAND , .....
のようなやり方でできたはずですが・・・
---------------------------
テキストボックスのコード
Private Sub txtTest_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTest.KeyDown
If (e.KeyCode = Keys.Enter) Then
'★★★ここでどういうコードを書いてよいかわかりません。
End If
End Sub
----------------------------
ボタンを押したときのイベントハンドラ
Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click
    ボタンを押したら、このイベントハンドラを呼び出したい。
    もしくは、間接的に呼び出したい。
-------
どなたか、やり方をご存知の方がいらっしゃいましたら、よろしくお願いします。

VB初心者です。
まだ、はじめたばかりなので、上手く質問を説明できませんが、よろしくお願いします。

環境はVisualBasic .net 2003です。

フォームにテキストボックス(TextBox)とボタン(Button)があります。
テキストボックス内でEnterキーを押すと、ボタン(Button)を押したのと同様の効果をだしたいのですが。
VC++6.0だと、SendMessage(WM_COMMAND , .....
のようなやり方でできたはずですが・・・
---------------------------
テキストボックスのコード
Private Sub txtTest_KeyDown(ByVal ...続きを読む

Aベストアンサー

>SendMessage(WM_COMMAND
とは、多少意味合いが異なりますが。。。

btnTest.PerformClick()
と行うと、btnTestオブジェクトと関連付いたイベントハンドラが起動します。
http://okwave.jp/kotaeru.php3?q=1688744


また、エンターキーの動きに限るのであれば、フォームのAcceptButtonプロパティを利用すると、コーディングが不要です。ついでにエスケープにも動作を持たせたいのであれば、CancelButtonプロパティを利用するといいです。



どうしてもCと全く同様に、イベントを起こすのであれば、Cと同じ手続きでAPIで起こせばよいと思います。
http://okwave.jp/kotaeru.php3?q=199357


Public Class Form1
  Inherits System.Windows.Forms.Form

  Private Declare Auto Function SendMessage Lib "user32" ( _
    ByVal hWnd As Integer, _
    ByVal wMsg As Integer, _
    ByVal wParam As Integer, _
    ByVal lParam As Integer _
  ) As Integer
  Private Declare Auto Function GetDlgCtrlID Lib "user32" ( _
    ByVal hWnd As Integer _
  ) As Integer

  Private Const WM_COMMAND As Integer = &H111
  Private Const BN_CLICKED As Integer = &H0

#Region " Windows フォーム デザイナで生成されたコード "
#End Region

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    btnTest.PerformClick()
    SendMessage( _
      Me.Handle.ToInt32, _
      WM_COMMAND, _
      BN_CLICKED * GetDlgCtrlID(btnTest.Handle.ToInt32) * &H10000, _
      btnTest.Handle.ToInt32 _
    )
  End Sub
End Class

>SendMessage(WM_COMMAND
とは、多少意味合いが異なりますが。。。

btnTest.PerformClick()
と行うと、btnTestオブジェクトと関連付いたイベントハンドラが起動します。
http://okwave.jp/kotaeru.php3?q=1688744


また、エンターキーの動きに限るのであれば、フォームのAcceptButtonプロパティを利用すると、コーディングが不要です。ついでにエスケープにも動作を持たせたいのであれば、CancelButtonプロパティを利用するといいです。



どうしてもCと全く同様に、イベントを起こすのであれば、...続きを読む

Q文字列の後ろから必要分だけ削除したい。

例1 Dim str As String = "あいうえお1234"

文字列の中の1234だけ削除したい場合は、
str = str.Remove(5,4)
という風に、5文字目の後から4文字削除にすればよいのですが、

例の"あいうえお"の部分の長さが毎回処理する度に異なる場合は、
文字列の頭から何文字目という指定ができないので、”後ろから4文字を削除したい”となります。その場合は、どのようなプロパティを使えばいいのでしょうか。

.NET環境です。

Aベストアンサー

Length(str)で文字数を取得できますので、後ろから4文字目は先頭から何文字目かは計算できると思いますが、どうでしょうか?

QコマンドボタンのEnterイベント後に、フォーカスを移動したい。

コマンドボタンのEnterイベント後に、フォーカスを移動したい。

フォームに「TextBox1」(TabIndex=0)「TextBox2」(TabIndex=1)「CommandButton1」(TabIndex=2)の3つのコントロールがある場合。

CommandButton1がクリックされた場合も、TextBox2からCommandButton1に、タブキーまたはエンターキーで、フォーカスが移った場合にも、同じ処理を行い、処理結果によってTextBox1やTextBox2にフォーカスを移したいと考えています。

以下のようなサンプルを作成しました。

Private Sub CommandButton1_Enter()
CommandButton1_Click
End Sub

Private Sub CommandButton1_Click()
MsgBox ("OK")
TextBox2.SetFocus
End Sub

この場合、CommandButton1_Enterのイベントが起こった場合、CommandButton1_Click()のTextBox2.SetFocusは効きません。
(正確には、CommandButton1_Enterイベントが終わった時点で無効でしょうか。)

Enterイベントは、フォーカスが移動する前に発生するため、このイベントが終わった後に、そもそもの動作に戻り、フォーカス移動が発生してしまうからなのだと思っております。

要は、コマンドボタンにタブキーやエンターキーでフォーカスしても、コマンドボタンをクリックしたのと同じ処理を行い、所定の位置にフォーカスを持っていきたいのですが、どのように行えば良いか、わからない状況です。

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

コマンドボタンのEnterイベント後に、フォーカスを移動したい。

フォームに「TextBox1」(TabIndex=0)「TextBox2」(TabIndex=1)「CommandButton1」(TabIndex=2)の3つのコントロールがある場合。

CommandButton1がクリックされた場合も、TextBox2からCommandButton1に、タブキーまたはエンターキーで、フォーカスが移った場合にも、同じ処理を行い、処理結果によってTextBox1やTextBox2にフォーカスを移したいと考えています。

以下のようなサンプルを作成しました。

Private Sub CommandButton1_Enter...続きを読む

Aベストアンサー

No.1です。

> 結果、textBox2ではなく、textBox1にフォーカスが移動してしまいました。

Windows XP Home・Excel2003/l2007のユーザーフォームにて、同じ動作に
なることを確認しました。
確かに、BENGALさんが質問文で記述されているように、Enterイベントの
発生するタイミングが「フォーカス移動の直前」であるために、VBAでFocusを
設定した後に、Enter/Tabの入力が反映されてしまっているようです。

試行錯誤の末、一応、「TextBox2のExitイベントを制御するための変数を
モジュールレベルで宣言」することにより、TextBox2にフォーカスを残すように
できました・・・が、今度はコマンドボタンのクリックによる移動の場合に、
TextBox2から抜けるのに2回Enter/Tab/Clickが必要になってしまいました(汗)
(Accessと違い、Excelのユーザーフォームでは、SetFocusによる移動時には
 Enterイベントが発生しないらしく、フラグが意図した通りに初期化されない)

ともあれ、こちらで試したコードを以下に提示します:


Option Explicit

'TextBox2のExitイベントを制御する変数を宣言
'(=TextBox2のExitイベントをキャンセルさせるためのフラグ)
Private bolT2Hold As Boolean

Private Sub CommandButton1_Enter()
  MsgBox "Ok"
  'Exitイベントのキャンセルフラグをオンにする
  bolT2Hold = True
  TextBox2.SetFocus
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  'フラグがオンの場合はExitイベントをキャンセルしてフォーカスを保持する
  Cancel = bolT2Hold
  'フラグを初期化(TextBox2の編集後などにまでキャンセルされるのを回避)
  bolT2Hold = False
End Sub


CommandButton1で立てるフラグをTrue/Falseではなく時刻の記録とし、
「TextBox2のExitイベント発生時の時刻とほぼ同時ならキャンセル」と
いうのも試してみましたが、Tabキーを押しっぱなしにした場合などの動作が
結局制御できていない状態になるため、断念しました(汗)

以上、中途半端な回答で申し訳ありませんが、参考まで。
(通常通り、コマンドボタンのクリック/コマンドボタン上でのEnterキー入力で
 対応した方が、(特にExcelユーザーフォームでは)制御しやすそうです(汗))

No.1です。

> 結果、textBox2ではなく、textBox1にフォーカスが移動してしまいました。

Windows XP Home・Excel2003/l2007のユーザーフォームにて、同じ動作に
なることを確認しました。
確かに、BENGALさんが質問文で記述されているように、Enterイベントの
発生するタイミングが「フォーカス移動の直前」であるために、VBAでFocusを
設定した後に、Enter/Tabの入力が反映されてしまっているようです。

試行錯誤の末、一応、「TextBox2のExitイベントを制御するための変数を
モジュールレベルで宣...続きを読む

Qテキストボックスからフォーカス外す

 editBox = CreateWindow(
  "EDIT",
  "あああ",
  SS_CENTER | WS_CHILD | WS_VISIBLE,
  0,0,100,20,
  hWnd,
  NULL,
  hInstance,
  NULL);


テキストボックスのフォーカスを外すにはどうしたら
いいんですか?
ESCキーでフォーカスを外そうと思ったら、
テキストボックスにフォーカスがあるせいで
case WM_KEYDOWN が動作しません。
フォーカスを外すというソース自体も分かっていません。


 case WM_KEYDOWN:
  if( wParam == VK_ESCAPE )
   ?
 break;

Aベストアンサー

WM_KILLFOCUS というメッセージがあります。これをエディットボックスのウィンドウに
送ってあげれば、フォーカスが外れると思います。

# WIN32 API なんて、久しぶりなので、ちょっと自信無し

QTextBoxに半角数字のみの入力しかできないようにしたい

タイトルどおりです。
フォームに貼り付けた、TextBoxに、半角数字のみしか入力できないようにしたいです。
000000~999999までのコード(数字)を入力させるようにするわけですが、そのままだと半角英数も全角も入力できてしまいます。

GrapeCity社製のカスタムコントロール「InputMan」の“Number”を用いると簡単なのですが、これだとカーソルがボックス内の右端にきて、一の位から入力が始まってしまいます。
数字は、ボックス内の左側から入力されていくようにしたいのですが、“Number”だとなんか出来なさそう・・・?
(“Number”で左側から入力できるならそれがいいのですが)

そこで、TextBoxを使うことにしたのですが、TextBoxだと、半角数字のみしか入力できないような制限がかけるのかが、わかりません。

もし、お分かりの方がいらっしゃいましたら、ご教授下さいませ。

Aベストアンサー

コピペですみません。
VB6だと、

Private Sub TextBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyBack, Asc("0") To Asc("9"), Asc("-"), Asc(".")
Case &H1 ' Ctrl + A
TextBox.SelStart = 0
TextBox.SelLength = Len(TextBox.Text)
Case &H3 ' Ctrl + C
Case &H16 ' Ctrl + V
Case &H18 ' Ctrl + X
Case &H1A ' Ctrl + Z
Case Else
KeyAscii = 0
End Select
End Sub

で、いかがでしょうか。

コピペですみません。
VB6だと、

Private Sub TextBox_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyBack, Asc("0") To Asc("9"), Asc("-"), Asc(".")
Case &H1 ' Ctrl + A
TextBox.SelStart = 0
TextBox.SelLength = Len(TextBox.Text)
Case &H3 ' Ctrl + C
Case &H16 ...続きを読む

QVB.NETのコンボボックスについて

VB6からVB.NETでプログラミングを始めました。
コンボボックスのクリアの仕方や設定の仕方、また
取り出し方等を教えて下さい。

色々とヘルプも見てみたのですが、よく解りません。
宜しくお願い致します。

Aベストアンサー

クリアだけだと思ってました。
追記します。

Itemを操作します


'登録
For i = 1 To 10
  Me.ComboBox1.Items.Add(i.ToString)
Next

'取得
For i = 0 To Me.ComboBox1.Items.Count - 1
  MsgBox(Me.ComboBox1.Items(i).ToString)
Next

'完全クリア
Me.ComboBox1.Items.Clear()

部分クリア
Me.ComboBox1.Items.RemoveAt(Index値)

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QBoolean型変数の値を反転する方法

ご存知の方教えて頂けますか?

Boolean型変数の値が True なら False,False なら True に変換したいのですが、現在次のようにcodeを書き、希望した値になります。

Dim bool As Boolean
中略
bool = bool - True

このcodeは正しいのでしょうか?
他に ”正しい方法”があるのでしょうか?
スミマセン!よろしくお願いします。

Aベストアンサー

> このcodeは正しいのでしょうか?
コードとしては「間違ってはいない」ぐらいでしょうか・・・

VB(VB.NET)の場合、(VB2005のヘルプの「ブール型 (Boolean) (Visual Basic) 」より抜粋)
------------------------------------------------------------
Visual Basic で数値型の値をブール型 (Boolean) に変換すると、
0 は False になり、その他の値はすべて True になります。
Visual Basic でブール型 (Boolean) の値を数値型に変換すると、False は 0 になり、True は -1 になります。
-------------------------------------------------------------
と言う制約がありますから、期待どうりに動作するでしょうけど・・・

bool がFalseなら、
「bool -True」は「0- -1=1」となり、「0以外」なので、Trueになり、
bool がTrueなら、
「bool -True」は「-1- -1= 0」となり、「0」なので、Falseになる・・・



> ”正しい方法”
は、やはり、「Not 演算子」による「論理否定」でしょうね。

> このcodeは正しいのでしょうか?
コードとしては「間違ってはいない」ぐらいでしょうか・・・

VB(VB.NET)の場合、(VB2005のヘルプの「ブール型 (Boolean) (Visual Basic) 」より抜粋)
------------------------------------------------------------
Visual Basic で数値型の値をブール型 (Boolean) に変換すると、
0 は False になり、その他の値はすべて True になります。
Visual Basic でブール型 (Boolean) の値を数値型に変換すると、False は 0 になり、True は -1 になります。
----------...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報