掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
同じ操作 (ID:118262)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>とてもむずかしいですね。 >こういう処理はなんという名前で呼ばれているのでしょう? いえ、知らないと自分で思いつくのは難しいですが、技術的には簡単な レベルだと思います。いたって普通のコードなので特に名前は付いて いないです。強いてあげるならコメントの文章そのままかと思います。 自分で関数(SetComboBoxesFirstやDispSecondCboScore)をつくる のは『サブプロシージャ(sub procedure)にする』『関数化する』 などと呼ばれたりします。[VB6.0]ではコントロール配列という、 同じ名前のコントロールに連番をつけて扱う処理があったので比較的 簡単でしたし、初心者でも知ってる場合が多かったですが、[VB.NET] ではサポートされていませんので自分で似たようなモノを用意する 必要があります。 たとえ初心者でも基礎ができてるちゃんとした『初心者プログラマ』 ならボクのヒントで下のコードくらいは書けるでしょう。『プログラム 未経験者』に入門本50ページくらいの基礎知識をつけるのを掲示板で やるのははた迷惑です。基礎知識は自分でつけてきて下さい。 とりあえずコンボボックスの6つでね。 [VB.NET] Option Strict On Public Class Form1 Inherits System.Windows.Forms.Form [省略] Windows フォーム デザイナで生成されたコード ' ループで利用できるようにコンボボックスの配列に参照を格納する Private mComboBoxesFirst() As ComboBox ' 1投目用コンボボックス格納(奇数番目) Private mComboBoxesSecond() As ComboBox ' 2投目用コンボボックス格納(偶数番目) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call Me.SetComboBoxes() End Sub Private Sub SetComboBoxes() ReDim Me.mComboBoxesFirst(2) Me.ComboBox1.Tag = 0 ' コンボボックス識別用のタグ設定 Me.ComboBox3.Tag = 1 Me.ComboBox5.Tag = 2 Me.mComboBoxesFirst(0) = Me.ComboBox1 Me.mComboBoxesFirst(1) = Me.ComboBox3 Me.mComboBoxesFirst(2) = Me.ComboBox5 ReDim Me.mComboBoxesSecond(2) Me.ComboBox2.Tag = 0 Me.ComboBox4.Tag = 1 Me.ComboBox6.Tag = 2 Me.mComboBoxesSecond(0) = Me.ComboBox2 Me.mComboBoxesSecond(1) = Me.ComboBox4 Me.mComboBoxesSecond(2) = Me.ComboBox6 ' 奇数番目のコンボボックスに1投目用の値設定 Call Me.SetComboBoxesFirst() End Sub ' 奇数番目のコンボボックスに1投目用の値設定 Private Sub SetComboBoxesFirst() Dim i, j As Integer ' コンボボックスの配列を使ったループ処理 For i = 0 To Me.mComboBoxesFirst.GetLength(0) - 1 If Me.mComboBoxesFirst(i) Is Nothing Then MessageBox.Show("設定されていないコンボボックスがあります。", "コンボボックス設定", MessageBoxButtons.OK, MessageBoxIcon.Error) Else With Me.mComboBoxesFirst(i) With .Items .Clear() For j = 0 To 10 .Add(CStr(j)) Next End With .SelectedIndex = 0 End With End If Next End Sub ' 奇数番目のコンボボックスを変更した時、偶数番目のコンボボックスの値を変更する関数呼び出し Private Sub Cbo_SelectedIndexChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles ComboBox1.SelectedIndexChanged, _ ComboBox3.SelectedIndexChanged, _ ComboBox5.SelectedIndexChanged Dim wComboBoxX As ComboBox = DirectCast(sender, ComboBox) Dim wEventNo As Integer = CInt(wComboBoxX.Tag) 'Debug.WriteLine(wComboBoxX.Name) Call Me.DispSecondCboScore(Me.mComboBoxesFirst(wEventNo), Me.mComboBoxesSecond(wEventNo)) End Sub ' 奇数番目のコンボボックスを変更した時、偶数番目のコンボボックスの値を変更する関数 Private Sub DispSecondCboScore(ByVal ComboBoxFirst As ComboBox, ByVal ComboBoxSecond As ComboBox) Dim wFirstScore, n As Integer wFirstScore = CInt(Val(ComboBoxFirst.Text)) With ComboBoxSecond .Items.Clear() Select Case (wFirstScore) Case 0 To 8 .Text = "-" .Items.Add("-") For n = 1 To (10 - wFirstScore - 1) .Items.Add(CStr(n)) Next .Items.Add("/") Case 9 .Text = "-" .Items.Add("-") .Items.Add("/") Case Else .Text = "" End Select End With End Sub End Class
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.