- 題名: お手数ですがc#をVBに変換をお願いします。
- 日時: 2004/11/11 14:07:11
- ID: 7298
- この記事の返信元:
- (なし)
- この記事への返信:
- [7300] Re[1]: お手数ですがc#をVBに変換をお願いします。2004/11/11 14:43:01
- [7301] Re[1]: お手数ですがc#をVBに変換をお願いします。2004/11/11 15:09:25
- ツリーを表示
たかだか数行の話なので。 まず、 Dim itm As XPListViewItem For Each itm In Me.Items は For Each itm As XPListViewItem In Me.Items と1行で書けます。 スコープの点から考えてもこう記述したほうがいいでしょう。 C#の『? :』演算子はVB.NETではIIf関数と同じです。 と考えると、For Each ループの中は次のように書けます。 If Not (_autoGroupList.Contains( _ IIf(itm.SubItems(columnID).Text = "", _emptyAutoGroupText, itm.SubItems(columnID).Text))) Then _autoGroupList.Add( _ IIf(itm.SubItems(columnID).Text = "", EmptyAutoGroupText, itm.SubItems(columnID).Text)) End If 以下を参考にして下さい。 http://dobon.net/vb/dotnet/vb2cs/vbiif.html
分類:[.NET]
今日は いつも勉強させて頂いています。
リストビューで各行別に列数を変えることが出来る方法を検討しています。
参考コードをここで紹介していただき、入手し解析中です。
開発環境がVB.Netで入手コードはC#です。(私の開発環境ではC#は動作しません。)
(私はc#のコードは解りませんがVBと似ていると言う事で勘で解析中)
このサイトで紹介されている変換サイトを使ってVBに変換していますが
かなりな変換エラーが発生し、エラーを元のC#コードを見ながら勘で修正しています。
従って、元のC#コードの意味も解らず、変換後のVBも動作するか不明な状態です。
とりあえず全ての変換エラーを修正し、その後動作確認する予定ですが
次のc#のコードをVBに変換できません。
お手数ですがc#をVBに変換して頂けないでしょうか?
C#コード
_autoGroupList.Clear();
foreach(XPListViewItem itm in this.Items){
if ( !_autoGroupList.Contains(itm.SubItems[columnID].Text == "" ? _emptyAutoGroupText : itm.SubItems[columnID].Text)) {
_autoGroupList.Add(itm.SubItems[columnID].Text == "" ? EmptyAutoGroupText : itm.SubItems[columnID].Text);
}
}
変換後のVBコード(エラー発生しています)
_autoGroupList.Clear()
Dim itm As XPListViewItem
For Each itm In Me.Items
If Not _autoGroupList.Contains((If itm.SubItems(columnID).Text = "" Then _emptyAutoGroupText Else itm.SubItems(columnID).Text)) Then 'ToDo: Unsupported feature: conditional (?) operator.
_autoGroupList.Add((If itm.SubItems(columnID).Text = "" Then EmptyAutoGroupText Else itm.SubItems(columnID).Text)) 'ToDo: Unsupported feature: conditional (?) operator.
End If
Next itm
変換後のVBコードで
If の内側に If がありその Then 〜 Else 〜 の〜の部分が式でなくフィールドまたは
itm.SubItems(columnID).Text) になっています。
この部分を普通の
If 〜 Then
If 〜 Then
End If
End If
の形式にすれば解決です。
_autoGroupList はArrayListです。
_emptyAutoGroupTextはPrivate _emptyAutoGroupText As String = "" で定義されています。
元のC#の意味が不明の為すみませんがお願いします。