listBoxとTimerについて C#
listBoxとTimerについて C#
ヤフーニュースのURLをlistboxへ入れます。
そしてlistBox1の中身を画面表示させたら、次にlistBox2の中身も表示したいと思っています。
最初listBoxが1つだったときはうまく行っていたのですが、listBoxを増やすとうまく行かなくなりました。
この状態だと、listBox2の中身だけ表示させて終わってしまいます。
Timerの使い方が怪しいと思うのですが、どうでしょうか?
些細なことでも何でもいいのでご意見頂ければ助かります。
-----以下コード抜粋------
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int urlindex = 0;
private void Form1_Load(object sender, EventArgs e)
{
listBox1.AllowDrop = true;
listBox1.DragEnter += new DragEventHandler(listBox1_DragEnter);
listBox1.DragDrop += new DragEventHandler(listBox1_DragDrop);
listBox2.AllowDrop = true;
listBox2.DragEnter += new DragEventHandler(listBox2_DragEnter);
listBox2.DragDrop += new DragEventHandler(listBox2_DragDrop);
}
private void listBox1_DragEnter(object sender, DragEventArgs e)
{
//URLのみ受け入れる//@ITより
if (e.Data.GetDataPresent("UniformResourceLocator"))
e.Effect = DragDropEffects.Link;
else
e.Effect = DragDropEffects.None;
}
private void listBox2_DragEnter(object sender, DragEventArgs e)
{
//URLのみ受け入れる//@ITより
if (e.Data.GetDataPresent("UniformResourceLocator"))
e.Effect = DragDropEffects.Link;
else
e.Effect = DragDropEffects.None;
}
private void listBox1_DragDrop(object sender, DragEventArgs e)
{
//ドロップされたリンクのURLを取得する//@ITより
string url = e.Data.GetData(DataFormats.Text).ToString();
//結果を表示
listBox1.Text = url;
//MessageBox.Show(url);
//ドロップされたデータがstring型か調べる
if (e.Data.GetDataPresent(typeof(string)))
{
ListBox target = (ListBox)sender;
//ドロップされたデータ(string型)を取得
string itemText =
(string)e.Data.GetData(typeof(string));
//ドロップされたデータをリストボックスに追加する
target.Items.Add(url);
//MessageBox.Show("表示");
}
}
private void listBox2_DragDrop(object sender, DragEventArgs e)
{
//ドロップされたリンクのURLを取得する//@ITより
string url = e.Data.GetData(DataFormats.Text).ToString();
//結果を表示
listBox2.Text = url;
//MessageBox.Show(url);
//ドロップされたデータがstring型か調べる
if (e.Data.GetDataPresent(typeof(string)))
{
ListBox target = (ListBox)sender;
string itemText =
(string)e.Data.GetData(typeof(string));
target.Items.Add(url);
}
}
private void goButton_Click(object sender, EventArgs e)
{
urlindex = 0;
timer1.Start();
timer2.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
if (listBox1.Items.Count != 0 && urlindex < listBox1.Items.Count)
{
string url = (string)listBox1.Items[urlindex];
webBrowser1.Navigate(url);
urlindex++;
}
}
private void timer2_Tick_1(object sender, EventArgs e)
{
timer2.Stop();
if (listBox2.Items.Count != 0 && urlindex < listBox2.Items.Count)
{
string url = (string)listBox2.Items[urlindex];
}
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
timer1.Start();
timer2.Start();
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
}
補足
Wr5さん ありがとうございます。 >どう「うまくいかない」んですか? 「;」を省くとグーグルぺーじのままになります。 >だと、それ以外の場合には判定成功しませんよ? なるほど・・・ これは半自動処理プログラムの一部なんですが この前に違うページが表示されてて、そのページ上の ボタンをクリックするという行動があります。 そのページのURLを拾ってるんで処理が上手く いかないんでしょうね。