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);
}
}
}
ご指導をお願いします。
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;
}
}
}
}
ご指摘ありがとうございます。
どうやら、URLにstrData[1]を直接指定していたのが原因だったようです。
.Tagに代入し、それをURLにしたことで、問題は解決しました。
ありがとうございました。
No.2
- 回答日時:
脱線メモ:
お気に入りリストに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を勧めたくなるけどね。
XMLで保存ですか。ご指摘ありがとうございます。
すみません私はXMLの知識がありません。
(HP公開していますが、すべてHTMLです。)
プラグラミング上、CSVのほうが作りやすいのでそうしました。
BASICみたいに、”***”を1つの塊として読めるならば
いいのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
特定の文字列が一致する行から...
-
C#で型変換
-
C# JSONについて
-
C# ListBoxのアイテムをユーザ...
-
string→CStringの型変換について
-
strtokでの空文字への置き換え
-
Log4jで機能毎に別ファイルへ出...
-
flush()とclose()について
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
javaで質問です。 文字列2023/2...
-
[JAVA]try 内の変数を外で!?
-
Javaで改行などが出来ないのです。
-
このプログラミング誰か教えて...
-
JSPやサーブレットでSystem.out...
-
ダブルクォーテーションを含む...
-
System.err. printlnとSystem.o...
-
変数を動的に利用するには?
-
int型のゼロ埋め
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# ListBoxのアイテムをユーザ...
-
特定の文字列が一致する行から...
-
strcmp関数などでの複数の文字...
-
C#でIPアドレスの取得について
-
Delphiで改行文字の置換がうま...
-
C#での関数テーブルの作り方
-
C# JSONについて
-
C#でプロパティを使わずXMLにデ...
-
C#で型変換
-
マルチスレッドで同時にFTPアッ...
-
「指定されたキャストは有効で...
-
GridViewで複数のDropDownList...
-
【Java8以降】csvファイルの複...
-
strtokでの空文字への置き換え
-
C++ ファイルからデータを取得
-
C++のSTL mapを使用するとセグ...
-
GDI+ DrawString() で指定範囲...
-
std::stringの継承
-
string→CStringの型変換について
-
2つのリストのマージ方法について
おすすめ情報