• ベストアンサー

VB6でForm_Load中にイベントを発生させない方法

VB6でForm_Loadにオプションボタンの選択を変更するとオプションボタンのクリックイベント(選択変更)が動作してしまいます。 Form_Loadの初期表示の設定をしているときは、オプションボタンのイベントを無効にしたいのですがどのようにしたら良いでしょうか? RemoveHandler等の処理があるみたいですが良く分かりません。 良い方法を教えてください。 宜しくお願いします。。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

VB6の環境がないのでなんですが、 Flagを使ってもできないことはないですね。 Optionコントロールは配列にしてあるでしょうから 追加コードも少々でしょう。 '--------------------------------------  Dim Flag As Boolean Private Sub Form_Load()  Flag = True  Option1(0).Value = True  Flag = False End Sub Private Sub Option1_Click(Index As Integer)  If Flag Then Exit Sub  MsgBox "option" End Sub '------------------------------------------- 以上ここまで。  

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

似たような質問があった。 http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200511/200511_05110066.html VBには無いようですね。 であれば、フラグででも処理情況を伝えて、成就していない間は、イベントで直ぐExitSubするほか無いようです。 ーー エクセルVBAにApplication.EnableEvents が有るので、APIかなんか使えば出来そうだが。

  • usokoku
  • ベストアンサー率29% (744/2561)
回答No.1

そのあたりのないようがさっぱりわからないので、 大域で Dim FormLoadFig& と作業中フラグを用意して Sub Form_load.... FormLoadFig& = 1& (適当な処理) FormLoadFig& = 2& end sub Sub 適当に_clock if (FormLoadFig& = 1&) then else (適当な処理) end if end sub Sub Form_Unload.... '大域変数は初回のみ初期化されるのでここで初期状態を設定 'イニシャライズのほうで初期化するのも可 FormLoadFig& = 0& end sub

関連するQ&A

  • Form1.vbをイベントなしで動作させるには?

    VB2005初心者で困っています。 Menu.vbとForm1.vb, Form2vb, Form3.vb・・・を作り、Menu.vbのButton1_ClickでForm1.Show()としてForm1.vbに移行し、次にForm1のButton1_clickイベントでExcelからDataを読み込んでGraphを書かせています。(この時は問題なく動作しています) これを、Form1に移行したらすぐにGraphを表示しようとして、Form1.vbの Public Class Form1 Private Sub Button_Clic(Byval sender As System・・・・・)Handles Button1.click   Dim g As Graphics   ・・・・ を変更して、  Private Sub Form1_Load(Byval sender As System・・・・)Handles MyBase.load Me.Show() Dim g As Graphics   ・・・・ と、しましたが、一瞬Graphは表示しますが、すぐに消えます。 また、罫線はまったく表示しません。 Button_ClickイベントなしでForm1を動かすにはどうすればよいのでしょうか?

  • Form1_Loadイベントのコードよりプロパティが優先?

    vb2005です。 フォーム1にDataGridView1を設置し、アクセスのテーブルにバインドしています。 デザインのプロパティでは「30」、 コードの Form1_Loadイベントには Me.DataGridView1.RowTemplate.Height = 15 として実行すると、 最初は30の行の高さで表示され、 フィールド部分をクリックして並べ替えると、 15になります。 Form1_Loadイベントに、 MsgBox(Me.DataGridView1.RowTemplate.Height) Me.DataGridView1.RowTemplate.Height = 15 MsgBox(Me.DataGridView1.RowTemplate.Height) としてみたら、 「30」→「15」となりました。 と言うことは、フォーム表示時には15にならなければいけないのに、30の高さで表示されます。 どういうことなのでしょうか? よろしくお願いします。

  • Loadイベント中にほかのイベントを発生したくない

    VisualC# .net です。 フォームを表示する場合に コンストラクタが呼ばれその後ロードイベントで フォームのコントロールの初期設定を行っています。 (この方法がまちがっている?) ロードイベント内でコンボボックスの初期設定を行うと コンボボックスのイベントが発生してしまいます。 以下参照にて このイベントでメッセージを表示しているのですが 初期設定では出てほしくありません。 そこで、 これを防ぐためには以下のようにフラグを立てるような 方法しかないのでしょうか? それともDebugger.IsAttached のようなものが 用意されているのでしょうか public bool iload = false;     (←仮フラグを追加) private void Form1_Load(object sender, EventArgs e) { iload = true;    (←仮フラグを登録) ComboBox1.SeletedIndex = 0; iload = false;   (←仮フラグを削除) } private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (iload) return;     (←仮フラグ登録時はなにもしない) MessageBox.Show("変更しました"); }

  • VB.net(2005)でFormのLoadイベント処理について質問で

    VB.net(2005)でFormのLoadイベント処理について質問です 設定時刻として9:00とします。 formを起動した時刻が9時前ならまで何もせず。 9時以降になれば処理を開始する。 といったプログラムを作成しようと思います。 サンプル) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim settingtime As DateTime '現在時刻を設定 Dim nowtime As DateTime = System.DateTime.Now.ToShortTimeString '設定時間を9時 settingtime DateTime = DateTime.Parse("9:00").ToShortTimeString '現在時刻が9時より後のとき If nowtime < setting Then         処理A Else '現在時刻が9時より前のとき         9時まで処理Aをしない(9時になれば処理Aを開始) End If End Sub 上記のようにコーティングしましたが、 呼び出した時が9時以降なら処理Aをして以前ならElseの処理を行い抜けてしまいます。 9時になれば処理をAをしたいのです。 formを呼び出しにTimerのTickイベントで9時になれば処理Aを開始? なにかいい案があればよろしくお願いします。

  • VB.NETでボタンクリックイベントの後に来るPage_Loadのようなイベントはありますか?

    タイトルのとおりなのですが、 VB.NETでボタンクリックイベントの後に来るPage_Loadのようなイベントはありますか? 教えてくださいーー

  • VB.Netのフォームロードイベントについて

    こんにちわ。 いまVB.Net2005Expressで勉強をしている者です。 あるフォームがロードされるときの処理を書こうとすると, 従来のVB6ではFormオブジェクトにLoadイベントがありましたが, VB.Net2005では,最初の状態ではフォームのイベントには 「New」,「Finalize」,「InitializeComponent」の3つしかありません。 もしVB.Net2005でForm_Loadイベントを書きたいときは, 自分で, 「Private Sub Form1_Load(Byval ~」と書かなくてはいけないのでしょうか? 初歩的な質問になるかもしれませんが,教えてください。 よろしくお願いします。

  • VB.NETでマウスクリックイベントを発生させたい。

    VB.NETでformの外で任意の座標でマウスクリックイベントを発生させたい。 formにはボタンがあり、そのボタンを押すを固定位置(formの外)でマウスの左クリックイベントを発生させたいのですがどのような手段を使えばいいでしょうか。 環境 Windows XP,VB2008 Exoress

  • vb.netでForm_Loadの終了判定について

    vb.netのWindowsApplicationでForm_Loadの終了判定ってどうやっていますか? Visual Studio 2015 visual Basic .net TextChangedイベントなどが、Form_Loadの前に走って 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 になってしまいがちですが、 これを回避するために、とりあえず下記の対応をしましたが、 スイッチをONにするハンドルはMyBase.Loadで良かったのか、 普通はどうするのか、 などをご教授ください。 <暫定対応> Dim SW_FormLoad As Boolean Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load  処理  :  SW_FormLoad = True End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged  If Not SW_FormLoad Then Return  処理 End Sub

  • VBのEVENT発生とCONTROLの有効範囲

    visual basicのeventとcontrolについての質問です。  初心者で苦労しています。以下のようなcodeingをしましたが上手く行きません。宜しくお願いします。 1.下記のcall updatefileによりupdatefile内でcombobox内のdataを設定します。これは次のdialogで   設定どおりに出ています。しかし元のsub startdialog1に帰ってdialogを表示してみるとcombobox   内は空となっています。  subroutineが変わるとformの controlは消えるのでしょうか。   もしそうならどの様にすれば良いのでしょうか。   (pushdata変数等をpublicとして再度comboに入れることもやりましたがNG) 2.STARTDIALOG1の初めに RADIO BUTTONの変更のCODEが有りますが、此処でEVENTが    発生しUPDATEFILEに行きます。    DIALOGを出すまでは初期値を設定しDIALOG上でCLICK等して変更をするCODEなので    不具合です。 (ほかにもいろいろ同じCODEが入っていますので)    CODE上の設定変更はEVENTが発生しないように、DIALOGからの変更はEVENT発生としたい    のですがどの様にしたら良いでしょうか。(普通そうなので何か勘違いしてるかも)   INTERNETで見るとAddHandler,AddressOf,REmoveHandlerなどが記載されていますが、    書き方と何処に書くのか判りません。(本当に必要かも?)    よろしくお願いします。    (以下のcodeは読みやすいように簡略化しています、code errorは大目に見て下さい。 ---------------------Form1.vbに記載---------------------------------------    Sub STARTDIALOG1()    '此処から処理が始まる with cform2 as Fform2 .Radio_btn1.Checked = True  ’ここへくるとbuttonのeventが発生,routineにいき,updatefileへいく Call UpdatePfile(1) 'ここはcomboboxの初期値を設定する(UPDATEPFILEを使う) .ShowDialog()     ’UpdatateFileでは入っていたがCOMOBOXの中は空になっている               この後comboboxのdataの選択などをdialogue上で設定値を変更する。 end with end sub -----------------------form1.vbに記載---------------------------------- sub UpdatePfile(ByVal cntlNO) 'PushDataはこの前にREADして設定している、keがそのDATAの個数 For k = 1 To ke cForm2.Combo_P.Items.Add(pushdata(k)) ’COMBOBOX Comb_Pに一覧として入れる Next k cForm2.ShowDialog()   'ここではCOMBOBOXにPUSHDATAが入ったLISTがでる end sub --------------------------------------------------------------------------- DisalogはForm2に作成    radioボタン Radio_btn1とRadio_btn2,combobox combo_P等をsetしている '---------------------------Form2.vbに記載------------------------------------ Private Sub push_button(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Radio_BTN1.CheckedChanged,Radio_BTN2.CheckChanged Dim cls As Form1 RDBTN = 1 If RDBTN > 0 Then Call cls.UpdatePfile(RDBTN) end Sub

  • Form内関数のパラメタについて VB6.0

    現在、他人の作成したVBプログラムを解析しているのですが、 どなたかご存知でしたらご教授願います。 画面の初期表示時の処理(Form_Load)内でPrivate Subで関数処理を 行っています。 仮にaaaという名称だった場合、 Private Sub From_Load() … aaa (0) End Sub とした時に、実際のaaa側は Public Sub aaa(Optional Mode As Integer=-1, Optional Index As Integer=-1) … End Sub とあった場合、Form_Load内でaaaに渡している(0)の値は、 "aaa側の第1パラメタであるModeに0を渡している" と言う解釈で合っていますか? また、この時のIndexパラメタには-1が設定されていると言う解釈で 合ってますでしょうか? VBはあまり良くわからずに悪戦苦闘しています。 すみませんがよろしくお願いします。

専門家に質問してみよう