#freeze
[[.NET]]
こんなの作って遊んでたんだけど、 問題があったのね。
IsReadonly=true にしたらキーボード入力を全然受け付けないし、そんで false にしても、いまいち使いづらかった。とにかくキーボードまわりが全然ダメダメ。
#ref(2016-02-23.jpg)
だから、以下の機能をつけてみる事にしたの。
- 「↑」キーで上に一行スクロール
- 「↓」キーで下に一行スクロール
- 「PageUp」で上に一ページスクロール
- 「PageDown」で下に一ページスクロール
- 「←」キーで前の章に移動(ページが存在するなら)
- 「→」キーで次の章に移動(ページが存在するなら)
- 「Home」キーで最初の行に移動
ところで wpf でキー入力を受け取るのって、なぜか KeyDown ではダメだったの。PreviewKeyDown ならOKだったんだけど、誰か理由知ってるかしら?
/// <summary>
/// キーボード・コントロール
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tb2_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.Up: tb2.LineUp(); break;
case Key.Down: tb2.LineDown(); break;
case Key.PageUp: tb2.PageUp(); break;
case Key.PageDown: tb2.PageDown(); break;
case Key.Home: tb2.ScrollToLine(0); break;
case Key.Right:
if (right1.Visibility == Visibility.Visible)
{
tb1.Text = getUpDown(tb1.Text, 1);
goWeb();
}
break;
case Key.Left:
if (left1.Visibility == Visibility.Visible)
{
tb1.Text = getUpDown(tb1.Text,-1);
goWeb();
}
break;
}
}