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

キー処理について

  • 題名: キー処理について
  • 著者: kunina
  • 日時: 2007/01/21 1:00:38
  • ID: 18866
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[OS : Windows XP Home Edition / 言語 : C#]
分類:[.NET]

【解決したい問題】

VisualStudio2005のC#を使用しております。
現在、
テキスト1行ずつ読み込み⇒行中に"★"があるとキー入力待ち
⇒Enter押す⇒{処理}⇒ 元の文章の続きを読み込み・・・

という処理を行いたいのですが、Enterを押したらそこで止まってしまいます。どうやら、元のテキストの読み込みに戻らないようです。

private void Form1_KeyDown(object sender, KeyEventArgs e) //Enterが押されたとき、EnterKeyDownが1でキー入力待ち、2で押した、0でなにもなしです。
{
if (EnterKeyDown == 1)
{
if (e.KeyData == Keys.Enter)
{
EnterKeyDown = 2;
}
}
}

すべてを載せると多いので、キー処理の部分のみですが、なにかよい方法はないでしょうか?
■No18866に返信(kuninaさんの記事)
> private void Form1_KeyDown(object sender, KeyEventArgs e) //Enterが押されたとき、EnterKeyDownが1でキー入力待ち、2で押した、0でなにもなしです。
> {
> if (EnterKeyDown == 1)
> {
> if (e.KeyData == Keys.Enter)
> {
> EnterKeyDown = 2;
> }
> }
> }
>
> すべてを載せると多いので、キー処理の部分のみですが、なにかよい方法はないでしょうか?

これだけでは意味不明です。
EnterKeyDown というメンバが何に作用するかわからないです。

むしろ、こんなところはどうでも良くて、StreamReader 側のソースを載せるべきだと思います。
すみません、確かに意味不明でした。
コードは下になります。


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace 実験室
{
public partial class Form1 : Form
{
private int EnterKeyDown;
System.IO.StreamReader sr =
new System.IO.StreamReader(@"アリス-1.txt",
System.Text.Encoding.GetEncoding(932));

public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
//Enterが押されたとき

{
if (EnterKeyDown == 1)
{
if (e.KeyData == Keys.Enter)
{
EnterKeyDown = 2;
ChangeBun();
}
}
}
private void ChangeBun()//文章切り替え
{
label1.Text = "";
EnterKeyDown = 0;
timer1.Start();
}

private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
while (sr.Peek() > -1)//一行ずつ読み込み
{
string Bun = sr.ReadLine();

// 改行コードを付加する
if (EnterKeyDown == 0)
{
Bun += System.Environment.NewLine;

label1.Text += Bun;

int iFind2 = Bun.LastIndexOf("★");
if (iFind2 != -1)
{
EnterKeyDown = 1; //キー待ち
if (EnterKeyDown == 2)
{
timer1.Stop();
ChangeBun();
}
}
}
}
}
}
}
C#はよく分かりませんのでコードもほとんど見てませんが
テキストの内容を全て読み込んだ上で★の部分までを出力
この時インデックスを取得しておいてENTERが押されたら次の★までを出力

この繰り返しではダメなのでしょうか?
  • 題名: Re[4]: キー処理について
  • 著者: kunina
  • 日時: 2007/01/23 21:37:12
  • ID: 18893
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
その方法も行ってみたのですが、Enterが動作せず。
他の方法を探してみようと思います、ありがとうございます!

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