• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[VC#2005] プログラムからのメニューの追加について)

[VC#2005] プログラムからのメニューの追加について

このQ&Aのポイント
  • Visual C#2005でウェブブラウザを作成し、IEの「お気に入り」のようなメニューを作成したいです。読み込みは完了しているが、項目をクリックすると最後の項目が実行されてしまいます。なぜでしょうか?
  • 質問者さんは、Visual C#2005でウェブブラウザを作成し、IEの「お気に入り」のようなメニューを作成したいとのことです。リストデータからファイルを読み込んで項目を追加することはできますが、項目をクリックすると最後の項目が実行されてしまう問題に直面しています。詳細な情報やソースコードの一部も提供されています。
  • Visual C#2005でウェブブラウザを作成し、リストデータからメニューに項目を追加する処理を実装しています。しかし、項目をクリックすると最後の項目が実行されてしまうという問題が発生しています。この問題の原因と解決策について質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

namespace Q4267863A { class Q4267863A:System.Windows.Forms.Form { private System.Windows.Forms.MenuStrip MenuStrip1 = new System.Windows.Forms.MenuStrip(); private System.Windows.Forms.ToolStripMenuItem fileitem = new System.Windows.Forms.ToolStripMenuItem(); public static void Main(){ Q4267863A Form1 = new Q4267863A(); Form1.ShowDialog(); } Q4267863A(){ string path = "urllist.txt"; string delimstr = ","; char[] delimiter = delimstr.ToCharArray(); string[] strData; string strLine; fileitem.Text = "お気に入り(&F)"; bool fileExist = System.IO.File.Exists(path); System.Console.WriteLine(fileExist); if (fileExist) { System.IO.StreamReader sr = new System.IO.StreamReader(path, System.Text.Encoding.GetEncoding(65001)); while (sr.Peek() >= 0) { strLine = sr.ReadLine(); strData = strLine.Split(delimiter); // Menustrip System.Windows.Forms.ToolStripMenuItem newitem = new System.Windows.Forms.ToolStripMenuItem(); newitem.Text = strData[0]; newitem.Tag = strData[1]; newitem.Click += delegate (object sender, System.EventArgs e){ //面倒くさかったのでWebbrowserは配置していない。 System.Windows.Forms.MessageBox.Show(((System.Windows.Forms.ToolStripMenuItem)sender).Tag.ToString()); }; fileitem.DropDownItems.Add(newitem); } MenuStrip1.Items.Add(fileitem); this.Controls.Add(MenuStrip1); this.MainMenuStrip = MenuStrip1; } } } }

ykiyono
質問者

お礼

ご指摘ありがとうございます。 どうやら、URLにstrData[1]を直接指定していたのが原因だったようです。 .Tagに代入し、それをURLにしたことで、問題は解決しました。 ありがとうございました。

その他の回答 (1)

回答No.2

脱線メモ: お気に入りリストにCSVを使うのは妥当か? ●一部のニュースサイトのURIには http://www.zdnet.com.au/downloads/0,139024478,10624935s,00.htm とか途中にカンマがあるケースもある。 ●IDNとかへの配慮 ●YahooとかGoogleとかには含まれないが,この記述中に改行文字やカンマを入れたい時への対処。 (なお,Excelなどによって吐かれるCSVでは a,b,"a,"" b" のようにカンマ,DQUOTE,改行などを文字列に含むときはDQUOTEで括られる。こうしたCSVは#1掲示のソースでは正しく読めない ) #俺はXML大好き人間だから保存形式としてXMLを勧めたくなるけどね。

ykiyono
質問者

お礼

XMLで保存ですか。ご指摘ありがとうございます。 すみません私はXMLの知識がありません。 (HP公開していますが、すべてHTMLです。) プラグラミング上、CSVのほうが作りやすいのでそうしました。 BASICみたいに、”***”を1つの塊として読めるならば いいのですが・・・。

関連するQ&A