DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テキストボックス内容の周期的な更新方法

環境/言語:[Windows Vista / Visual Basic 2005]
分類:[.NET]

初めて投稿させていただきます渡辺と申します。

タイトルの通り、テキストボックスに書かれている内容を定期的に更新する
仕掛けを作成したいのですがアドバイスを頂きたく、宜しくお願い致します。

現状のコード:

1. OpenfileDialogで、ファイルの選択 (filename1は既に宣言されています)

Dim openfiledialog1 As New OpenFileDialog
If openfiledialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
filename1 = System.IO.Path.GetFileName(openfiledialog1.FileName)
TextBox1.Text = filename1

2. 次にこのファイルのタイムスタンプを取得します。
(Path1及びdatetime1も予め宣言されております。)
path1 = System.IO.Path.GetFullPath(openfiledialog1.FileName)
datetime1 = System.IO.File.GetLastWriteTime(path1)
TextBox2.Text = datetime1
End If

という流れの中、周期的(〜60秒サイクル)に1.で選んだファイルの内容が
更新されているかを確認したいのですが、いいアイデアいただけないでしょうか。
また、StreamReader等を使って新しいテキストボックス (TextBox3)に
その内容を更新がかかる毎に表示させる、という事は可能なのでしょうか?

VBを初めてまだ1ヶ月の素人ですが、どうかご教授頂きたく、
宜しくお願い致します。
Timerコントロールを利用するのが手っ取り早いかな
「.NET タイマー」とか「.NET Timer」で検索するといいでしょう

ただし正確に60秒とかいうとTimerでは無理かな
2010/04/16(Fri) 17:23:33 編集(投稿者)

■No26719に返信(渡辺さんの記事)
> という流れの中、周期的(〜60秒サイクル)に1.で選んだファイルの内容が
周期的な処理であれば、フォームに「Timer」を貼って使うのが楽かと。

> 更新されているかを確認したいのですが、いいアイデアいただけないでしょうか。
このサイトの Tips にある監視方法を併用するという手も。
http://dobon.net/vb/dotnet/file/filesystemwatcher.html

> また、StreamReader等を使って新しいテキストボックス (TextBox3)に
> その内容を更新がかかる毎に表示させる、という事は可能なのでしょうか?
そういう作りにする事はできると思いますが…たとえばその場合、
TextBox の内容をユーザーがスクロールして閲覧している最中に
テキストの内容がいきなり更新されてしまう事もあるという事でしょうか。

だとすると、カーソル位置/スクロール位置がいきなり変更されたり、
あるいは読んでいる最中の内容がごっそり入れ替ったりしてしまい、
使いにくいアプリになってしまう可能性もあるかも知れません。
くら 様、魔界の仮面弁士 様

回答、ありがとうございます。

>そういう作りにする事はできると思いますが…たとえばその場合、
>TextBox の内容をユーザーがスクロールして閲覧している最中に
>テキストの内容がいきなり更新されてしまう事もあるという事でしょうか。

この件ですが、更新するファイル自体は一行のファイルですが、
ネットワーク越しで転送されてくる為、タイムスタンプが
その都度その都度、更新されるという物になっています。

ご指摘の通り、Timerコンとロールについて勉強して、
コードを書いてみます。ありがとうございました。

またタイマーで行き詰ったら質問させて頂くかも知れません。
御手数をおかけして申し訳ございませんが、
その時は、宜しくご教授の程、お願い致します。

DOBON.NET | プログラミング道 | プログラミング掲示板