■78007 / ) |
Re[2]: 数分間操作がなかった場合のイベントについて |
□投稿者/ straf (5回)-(2015/12/07(Mon) 16:11:42)
|
2015/12/07(Mon) 16:12:59 編集(投稿者)
■No78006 (みい さん) に返信 > フォームのメンバ変数に > ・マウス座標(Point型) > ・最新操作時刻(DateTime型) > を用意。 > フォーム起動時に現在の日時(DateTime.Now)とマウス座標(Control.MousePosition)をセットしておきます。 > ・キー入力イベントで日時を更新 > ・タイマーイベントで現在のマウス座標とメンバ変数を比較し、 > 座標が変わっていたら、マウス座標と日時を更新 > ・同じくタイマーイベント内で現在の日時とメンバ変数の日時を比較(TimeSpanで時間差を求める)し、 > 既定の時間が経過していたらthis.Close() > タイマーのIntervalはどのくらいの精度が必要か次第です > (数分レベルのチェックなら100msとか500msで十分だと思いますが)。
public partial class Display : Form { 中略 DateTime dtsave = DateTime.Now; Point pNow = Control.MousePosition;
中略 private void Display_KeyDown(object sender, KeyEventArgs e) {
DateTime dtsave = DateTime.Now; } } の後はどのように書けばいいでしょうか? timerでpointを取得比較、違う場合はpNowに上書きdtsaveの更新だとは思うのですが、比較はPoint.Inequalityというものを使うのでしょうか(記述方法がよくわからないのですがよければ教えていただけ無いでしょうか)
また例えば1分で操作がなければ終了とするときは DateTime dtNow = DateTime.Now; で現在時刻を取得しつつ TimeSpan dts = dtNow - dtsave; でdtsが1分以上になったときにifで通せばいいのでしょうか
|
|