C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[6]: 変数で宣言するには?


(過去ログ 28 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■13380 / inTopicNo.1)  変数で宣言するには?
  
□投稿者/ にゅうむ (1回)-(2008/01/29(Tue) 04:52:24)

分類:[VB.NET/VB2005] 

特定のディレクトリに入っている複数のファイルを全て取得し、その数だけToolStripMenuItemとして作成しようと思っています。
そのループ処理の際、xxx1、xxx2、xxx3のように、規則性のあるToolStripMenuItemを宣言したいのです。
変数を使って、「Dim xxx & Number As New ToolStripItem」のような感じで宣言できないのでしょうか?
引用返信 編集キー/
■13383 / inTopicNo.2)  Re[1]: 変数で宣言するには?
□投稿者/ επιστημη (801回)-(2008/01/29(Tue) 06:33:11)
επιστημη さんの Web サイト
> 変数を使って、「Dim xxx & Number As New ToolStripItem」のような感じで宣言できないのでしょうか?

配列とか System.Collections.Generic.List(Of ToolStripItem)とかじゃダメなんでしょか。
引用返信 編集キー/
■13386 / inTopicNo.3)  Re[2]: 変数で宣言するには?
□投稿者/ にゅうむ (2回)-(2008/01/29(Tue) 07:29:19)
No13383 (επιστημη さん) に返信
>>変数を使って、「Dim xxx & Number As New ToolStripItem」のような感じで宣言できないのでしょうか?
>
> 配列とか System.Collections.Generic.List(Of ToolStripItem)とかじゃダメなんでしょか。

ごめんなさい。
仰ってる事がまだ理解できません。

ファイルが20個あった場合、同じようにToolStripMenuItemを作成し、それぞれイベントハンドラを振り分けようと思っています。
これは不可能な事なのでしょうか?
引用返信 編集キー/
■13387 / inTopicNo.4)  Re[3]: 変数で宣言するには?
□投稿者/ Mr.T (171回)-(2008/01/29(Tue) 08:50:48)
Mr.Tです、こんにちは。

No13386 (にゅうむ さん) に返信
> ■No13383 (επιστημη さん) に返信
> >>変数を使って、「Dim xxx & Number As New ToolStripItem」のような感じで宣言できないのでしょうか?
>>
>>配列とか System.Collections.Generic.List(Of ToolStripItem)とかじゃダメなんでしょか。
>
> ごめんなさい。
> 仰ってる事がまだ理解できません。

そのNumberであらわしているような通し番号をつける必要性は、
必ずしもないんじゃないのと、いうことではないかなと思います。
ループ処理するなら、For Eachでまわせるから。

どうしても(プログラマが明示的に考えた)順番が必要ってなら、
Dictonary(of Integer ,ToolStripItem)とか配列とかで、個別に順番を振ったら
よいのではないかなと。

> ファイルが20個あった場合、同じようにToolStripMenuItemを作成し、それぞれイベントハンドラを振り分けようと思っています。
> これは不可能な事なのでしょうか?

可能です。普通にイベントを登録するだけですよ。


引用返信 編集キー/
■13388 / inTopicNo.5)  Re[3]: 変数で宣言するには?
□投稿者/ επιστημη (802回)-(2008/01/29(Tue) 09:04:17)
επιστημη さんの Web サイト
> ファイルが20個あった場合、同じようにToolStripMenuItemを作成し、それぞれイベントハンドラを振り分けようと思っています。
> これは不可能な事なのでしょうか?

いや、だからたとえばぁ...

Private MenuItems As New List(Of ToolStripMenuItem)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  Dim I As Integer
  For I = 0 To 3
    Dim item As New ToolStripMenuItem(String.Format("Item-{0}", I))
    MainMenu.DropDownItems.Add(item)
  Next
End Sub

とかなんとか。

引用返信 編集キー/
■13390 / inTopicNo.6)  Re[4]: 変数で宣言するには?
□投稿者/ にゅうむ (3回)-(2008/01/29(Tue) 09:19:25)
No13387 (Mr.T さん) に返信
> Mr.Tです、こんにちは。
>
> ■No13386 (にゅうむ さん) に返信
>>■No13383 (επιστημη さん) に返信
>>>>変数を使って、「Dim xxx & Number As New ToolStripItem」のような感じで宣言できないのでしょうか?
> >>
> >>配列とか System.Collections.Generic.List(Of ToolStripItem)とかじゃダメなんでしょか。
>>
>>ごめんなさい。
>>仰ってる事がまだ理解できません。
>
> そのNumberであらわしているような通し番号をつける必要性は、
> 必ずしもないんじゃないのと、いうことではないかなと思います。
> ループ処理するなら、For Eachでまわせるから。
>
> どうしても(プログラマが明示的に考えた)順番が必要ってなら、
> Dictonary(of Integer ,ToolStripItem)とか配列とかで、個別に順番を振ったら
> よいのではないかなと。
>
>>ファイルが20個あった場合、同じようにToolStripMenuItemを作成し、それぞれイベントハンドラを振り分けようと思っています。
>>これは不可能な事なのでしょうか?
>
> 可能です。普通にイベントを登録するだけですよ。
>

てっきり何らかの記号を使って変数を宣言に用いる事が出来たりするのかな、と思っていました。
規則性のある名前にしたかったのは、変数を宣言に用いる事が出来れば、配列やFor X To Y等のループ処理を使って簡単に出来ると思ったからです。
不可能なら仕方無いのであきらめます。

ただ、挙げて貰ったSystem.Collections.Generic.ListやDictionary等は使ってみた事がありません。
参考になるサイトやソース等はありますか?
引用返信 編集キー/
■13391 / inTopicNo.7)  Re[5]: 変数で宣言するには?
□投稿者/ はつね (407回)-(2008/01/29(Tue) 09:41:14)
はつね さんの Web サイト
No13390 (にゅうむ さん) に返信
> ただ、挙げて貰ったSystem.Collections.Generic.ListやDictionary等は使ってみた事がありません。
> 参考になるサイトやソース等はありますか?

まずは、googleなどで「System.Collections.Generic.List」と検索してみて、一番自分にしっくりくる説明のあるサイトを探してみてはいかがでしょうか。
その上で、そこに書かれていることが分からない事があったときに改めて質問すると、いまこの状態で得られる知識の何倍もの知識を同じ時間間隔で得られる事ができますよ。

引用返信 編集キー/
■13392 / inTopicNo.8)  Re[5]: 変数で宣言するには?
□投稿者/ Mr.T (172回)-(2008/01/29(Tue) 09:43:08)
2008/01/29(Tue) 10:53:09 編集(投稿者)
Mr.Tです、こんにちは。
> てっきり何らかの記号を使って変数を宣言に用いる事が出来たりするのかな、と思っていました。
> 規則性のある名前にしたかったのは、変数を宣言に用いる事が出来れば、配列やFor X To Y等のループ処理を使って簡単に出来ると思ったからです。 
> 不可能なら仕方無いのであきらめます。

それだけでは、「規則性を求めるのに、変数に番号をつけるのか」
がわかりません。
というか、その考え方だけにこだわるのは、もったいないです。
せっかく、VB.NETでやってるのに...
#というか、VBでもCollectionはあったと思いますが

規則性がある、ってのは「なんらかの順番をつけている」ってことで、
であれば、変数名に番号をつけること以外でも解決する方法が、世の中にはあります。

> ただ、挙げて貰ったSystem.Collections.Generic.ListやDictionary等は使ってみた事がありません。
> 参考になるサイトやソース等はありますか?

これがわかれば、今までの考え方(変数に番号をつける)以外にもうまいやり方が
あるんだと、わかると思います。

少なくとも、ループだけでいうなら、こういうことで解決できますよ?
#例は、IntegerとStringになってますが

        Dim dmyDictonary As System.Collections.Generic.Dictionary(Of Integer, String) _
                    = New System.Collections.Generic.Dictionary(Of Integer, String)

        dmyDictonary.Add(1, "これが一番目")
        dmyDictonary.Add(2, "これが二番目")
        dmyDictonary.Add(3, "これが三番目")

        For Each sItem As KeyValuePair(Of Integer, String) In dmyDictonary
            'ここでループ処理
            If sItem.Key = 1 Then
                'ここは、1番目に該当するときに行う処理
            Else
                'それ以外の処理
            End If
        Next

        Dim i As Integer
        For i = 1 To dmyDictonary.Count
            If dmyDictonary.Item(i) = "これが一番目" Then
                'これが一番目の処理
            Else
                'それ以外の処理
            End If
        Next

まあ、私のヘタッピサンプルよりも、ググればいろんなもんが
出てきますよ。

#一部、意味不明な点を訂正しました

引用返信 編集キー/
■13393 / inTopicNo.9)  Re[6]: 変数で宣言するには?
□投稿者/ επιστημη (803回)-(2008/01/29(Tue) 10:05:05)
επιστημη さんの Web サイト
> 規則性のある名前にしたかったのは、変数を宣言に用いる事が出来れば、
> 配列やFor X To Y等のループ処理を使って簡単に出来ると思ったからです。 

複数のToolStripMenuItemに通し番号を付け、N番目をお手軽に参照したいってーことでしょか。

Imports System.Collections.Generic

Public Class Form1

' 可変長配列
Private MenuItems As New List(Of ToolStripMenuItem)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  Dim I As Integer
  For I = 0 To 3
    ' 一個作って
    Dim item As New ToolStripMenuItem(String.Format("Item-{0}", I))
    ' Tagを打ちこみ
    item.Tag = I
    ' 可変長配列に追加して
    MenuItems.Add(item)
    ' ハンドラを設定
    AddHandler item.Click, New EventHandler(AddressOf Me.MenuItemClicked)
    ' んでもってメニューに追加
    MainMenu.DropDownItems.Add(item)
  Next
End Sub

' イベントハンドラ
Private Sub MenuItemClicked(ByVal sender As System.Object, ByVal e As System.EventArgs)
  Dim I As Integer
  ' Tagから通番を取りだして
  I = CType(sender, ToolStripMenuItem).Tag
  ' 可変長配列 MenuItemsのI番目にアクセス
  ListBox1.Items.Add(MenuItems(I).Text)
End Sub

End Class

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -