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

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

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

C#におけるCombobox

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

■89343 / inTopicNo.1)  C#におけるCombobox
  
□投稿者/ 34 (8回)-(2018/11/20(Tue) 17:47:32)

分類:[C#] 

現在、VB.NETのコードをC#に移植する作業を続けているプログラミング初心者です。

VB.NET
form1.ComboBox1.Text = form1.ComboBox1.GetItemText(form1.ComboBox1.Items(0))」

このコードをコンバーターにかけた所、

C#
this.comboBox1.Text = this.comboBox1.GetItemText(this.comboBox1.Items(0));

となったのですが、Items(0)の下に赤い波線が出て、「実行不可能なメンバー'Combobox.Items'をメソッドのように使用することはできません。」と
エラーが出てしまいます。どのようにすればエラーをなくせるでしょうか。宜しくお願いします。

引用返信 編集キー/
■89344 / inTopicNo.2)  Re[1]: C#におけるCombobox
□投稿者/ 魔界の仮面弁士 (1948回)-(2018/11/20(Tue) 17:57:39)
No89343 (34 さん) に返信
> このコードをコンバーターにかけた所、
どこのコンバーターでしょうか?


> C#
> this.comboBox1.Text = this.comboBox1.GetItemText(this.comboBox1.Items(0));
this.comboBox1.Text = this.comboBox1.GetItemText(this.comboBox1.Items[0]);
引用返信 編集キー/
■89345 / inTopicNo.3)  Re[2]: C#におけるCombobox
□投稿者/ WebSurfer (1669回)-(2018/11/20(Tue) 18:02:30)
No89344 (魔界の仮面弁士 さん) に返信

> どこのコンバーターでしょうか?

http://converter.telerik.com/ はダメでした。

Items[0] に変換してくれるサービスがあれば教えていただけると幸いです。

引用返信 編集キー/
■89346 / inTopicNo.4)  Re[3]: C#におけるCombobox
□投稿者/ 魔界の仮面弁士 (1949回)-(2018/11/20(Tue) 18:32:40)
2018/11/20(Tue) 19:12:14 編集(投稿者)

No89344 (魔界の仮面弁士) に追記
> どこのコンバーターでしょうか?

これなんですが、

・form1 が this に変換されている
・ComboBox1 が comboBox1 に変換されている

という『意訳』っぷりが見て取れるので、
どのコンバーターを使っているのか、単純に興味があるので、
教えてもらえると嬉しいです。

(そもそも最近のバージョンの VB だと、元のコードも BC31139 エラーで弾かれそうなんですが)


No89345 (WebSurfer さん) に返信
> Items[0] に変換してくれるサービスがあれば教えていただけると幸いです。

単純な構文解析だけでは、「引数付きプロパティ」を「メソッド」の呼び出しと
区別できませんから、丸括弧から角括弧への変換ができないのは、
ある程度仕方ないでしょうね。

元の VB 製アセンブリがあるのなら、現在利用している変換器と併用して、
アセンブリをロードするタイプのツール(たとえば、ILSpy など)を
併用して見比べてみるのも良いかも知れません。
http://www.atmarkit.co.jp/fdotnet/dotnettips/1055ilspy/ilspy.html
https://github.com/icsharpcode/ILSpy/releases


ただ、このタイプの変換器は、VB コンパイラが自動的に挿入するヘルパーも
そのまま直訳するので、今回のコードだと

this.comboBox1.Text = this.comboBox1.GetItemText(System.Runtime.CompilerServices.RuntimeHelpers.GetObjectValue(this.comboBox1.Items[0]));

などに過訳される可能性がありそうです。

# 前回紹介されていた dnSpy は、使ったことが無いので分からないです。
引用返信 編集キー/
■89347 / inTopicNo.5)  Re[4]: C#におけるCombobox
□投稿者/ WebSurfer (1670回)-(2018/11/20(Tue) 18:53:01)
No89346 (魔界の仮面弁士 さん) に返信

返信をありがとうございました。

コピペしてボタンクリックでほぼ完全に変換というのはなかなか難しそうですね。
引用返信 編集キー/
■89350 / inTopicNo.6)  Re[1]: C#におけるCombobox
□投稿者/ shu (1156回)-(2018/11/21(Wed) 07:36:40)
No89343 (34 さん) に返信

このスレッドの
34さんとWebSurferさんは同じ方でしょうか?
もしそうならWebSurferさんは他の方が使われているので避けた方が良いです。
引用返信 編集キー/
■89351 / inTopicNo.7)  Re[3]: C#におけるCombobox
□投稿者/ koz (1回)-(2018/11/21(Wed) 08:58:18)
> Items[0] に変換してくれるサービスがあれば教えていただけると幸いです。
サービスではないんですが、

SharpDevelop
http://www.icsharpcode.net/opensource/sd/Default.aspx

の 4.4 だとVB.NET のプロジェクトをアプリケーションフレームワークや
デフォルトインスタンスを考慮した C# のプロジェクトに変換できます。

問題のコードだと

My.MyProject.Forms.Form1.ComboBox1.Text = My.MyProject.Forms.Form1.ComboBox1.GetItemText(My.MyProject.Forms.Form1.ComboBox1.Items[0]);

こんな感じ。
残念ながら 5.0 から C# Only になってしまいましたが・・・

引用返信 編集キー/
■89353 / inTopicNo.8)  Re[4]: C#におけるCombobox
□投稿者/ WebSurfer (1671回)-(2018/11/21(Wed) 10:13:11)
No89350 (shu さん) に返信

> 34さんとWebSurferさんは同じ方でしょうか?

No89347 の投稿者は 34さんではなくて、私 WebSurfer です。

紛らわしかったようですみません。

No89351 (koz さん) に返信

> SharpDevelop
> http://www.icsharpcode.net/opensource/sd/Default.aspx
>
> の 4.4 だとVB.NET のプロジェクトをアプリケーションフレームワークや
> デフォルトインスタンスを考慮した C# のプロジェクトに変換できます。

情報をありがとうございます。使ってみます。
引用返信 編集キー/
■89354 / inTopicNo.9)  Re[4]: C#におけるCombobox
□投稿者/ PANG2 (244回)-(2018/11/21(Wed) 10:48:46)
No89346 (魔界の仮面弁士 さん) に返信
> # 前回紹介されていた dnSpy は、使ったことが無いので分からないです。

Me.ComboBox1.Text = Me.ComboBox1.GetItemText(ComboBox1.Items(0))

using System.Runtime.CompilerServices;
this.ComboBox1.Text = this.ComboBox1.GetItemText(RuntimeHelpers.GetObjectValue(this.ComboBox1.Items[0]));

本質問のミニマムの回答が、

.Items(0) → .Items[0]

だとすると、答えてくれてますね。RuntimeHelpers.GetObjectValue が余分だけど。

引用返信 編集キー/
■89416 / inTopicNo.10)  Re[2]: C#におけるCombobox
□投稿者/ 34 (9回)-(2018/11/27(Tue) 14:50:11)
みなさま、ご回答ありがとうございました。

No89350 (shu さん) に返信
> ■No89343 (34 さん) に返信
>
> このスレッドの
> 34さんとWebSurferさんは同じ方でしょうか?
> もしそうならWebSurferさんは他の方が使われているので避けた方が良いです。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ