アプリ版:「スタンプのみでお礼する」機能のリリースについて

Visual C#2005でウェブブラウザを作成していますが、IEの「お気に入り」のようなメニューを作成したいです。

リストデータから、ファイルを読み込み、項目を追加するまではできましたが、

リスト(CSVファイル)は下記のようになっており

Yahoo,http://www.yahoo.co.jp/
goo,http://www.goo.ne.jp/
goole,http://www.google.co.jp/

これらを、メニューに追加します。

しかし、読み込みは完了しているようですが、
項目をクリックすると、一番最後の項目が実行されてしまいます。
(googleが表示されてしまいます)
なぜでしょうか?
いろいろと調べてみたのですが、「VC++」のものしかありません。

ソースはマイクロソフトのものを参考にしました。

private void LoadData()
{
string path = "urllist.txt";
string delimstr = ",";
char[] delimiter = delimstr.ToCharArray();
string[] strData;
string strLine;

ToolStripMenuItem fileitem = new ToolStripMenuItem();
fileitem.Text = "お気に入り(&F)";

Boolean fileExsits = System.IO.File.Exists(path);
if (fileExsits)
{
System.IO.StreamReader sr =
new System.IO.StreamReader(
path, System.Text.Encoding.Default);

while (sr.Peek() >= 0)
{
strLine = sr.ReadLine();
strData = strLine.Split(delimiter);
// Menustrip

ToolStripMenuItem newitem = new ToolStripMenuItem();
newitem.Text = strData[0];
newitem.Click += delegate
{

webBrowser1.Navigate(strData[1]);

};
fileitem.DropDownItems.Add(newitem);
menuStrip1.Items.Add(fileitem);

}

}

}

ご指導をお願いします。

A 回答 (2件)

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;


}
}

}
}
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2008/08/22 08:52

脱線メモ:


お気に入りリストにCSVを使うのは妥当か?

●一部のニュースサイトのURIには
http://www.zdnet.com.au/downloads/0,139024478,10 …
とか途中にカンマがあるケースもある。
●IDNとかへの配慮
●YahooとかGoogleとかには含まれないが,この記述中に改行文字やカンマを入れたい時への対処。

(なお,Excelなどによって吐かれるCSVでは
a,b,"a,""
b"
のようにカンマ,DQUOTE,改行などを文字列に含むときはDQUOTEで括られる。こうしたCSVは#1掲示のソースでは正しく読めない
)

#俺はXML大好き人間だから保存形式としてXMLを勧めたくなるけどね。
    • good
    • 0
この回答へのお礼

XMLで保存ですか。ご指摘ありがとうございます。
すみません私はXMLの知識がありません。
(HP公開していますが、すべてHTMLです。)

プラグラミング上、CSVのほうが作りやすいのでそうしました。

BASICみたいに、”***”を1つの塊として読めるならば
いいのですが・・・。

お礼日時:2008/08/22 08:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!