2017-02-27 2 views
1

基本的に、私のWindowsフォームアプリケーションは、人の名前をテキストボックスに入力し、高さをcmで別のテキストボックスに入力するプログラムです。 btnAddNewPersonというボタンがクリックされると、テキストボックス内の入力はlstNameslstHeightという2つの異なるリストに移動します。特定の人数が追加され、計算ボタンがクリックされると(btnCalc)、メッセージボックスには最小の高さと平均の高さが表示されます。リストのサイズに応じてボタンを消してビジュアルベーシックに表示する

私が抱えている問題は、特定の量のエントリが作成されたらAdd New Personボタンが消える(不可視になる)ようにすることです。そして、計算ボタンは、一定量のエントリが作成された時点でのみ表示されるようにしたい(早すぎる計算を望まない)。

次のコードを試しましたが、動作しません。 は、「タイプの未処理の例外をプログラムは、私がマウスを動かす秒がクラッシュし、私が手にエラーが

は 『System.NullReferenceException』を身長Finder.exeに 発生しました追加情報:オブジェクト参照がインスタンスに設定されていませんオブジェクトの "。

Private Sub frmHeightFinder_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove 
    If lstNames.Count >= 4 Then 
     btnAddNewPerson.Visible = False 
    Else btnAddNewPerson.Visible = True 
    End If 
End Sub 
+0

質問:このメソッドはどのように呼びますか?コンパイラはこのメソッドの実行方法をどのように知っていますか?そしていつ? – Kenyanke

+0

[**同じ質問を2回お願いしません**](http://stackoverflow.com/questions/42468424/making-buttons-disappear-depending-on-the-size-of-a-list)(特に別のアカウントではありません!) –

+0

なぜ私は時間の制約の下にあったので、私はそれをしました、そして、私は1日の禁止のために別の質問を書くことができませんでした。私は何を書いたのか明確に書いていないので、私は質問を書き直すことにしました。私は将来それをしません。 – Nadro

答えて

0

(あなたがマウスを移動するとき、すなわち)を使用すると、ボタンをクリックする前に、それはクラッシュだ場合は、マウスイベントの呼び出しに問題があるのです。これを行うより良い方法は、条件(lstnames.Count> 4)が満たされているかどうかを確認してから、AddPersonメソッドをチェックインして非表示にする方法です。さらに、ボタンを非表示にするのではなく、単に無効にすることをお勧めします。 例:

Private Sub btnAddNewPerson_Click(sender As Object, e As EventArgs) 
    ' Add person to the list code here 

    If lstNames.Count >= 4 Then 
     btnAddNewPerson.Enabled = False 
     btnCalc.Enabled = True ' I assume this is what you want here 
    End If 
End Sub 
+0

編集:動作しているようですが、それでもいくつかの変更を加える必要があります。それが再び再生する場合、病気を知らせてください – Nadro

+0

いいえ。答えを受け入れることを忘れないでください。がんばろう。 –

関連する問題