teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

ソリューションをGitHubに登録したので追記

2020/03/26 11:16

投稿

len_souko
len_souko

スコア1367

answer CHANGED
@@ -13,6 +13,7 @@
13
13
  質問文通りにtextareaの文字列にtabを追加するようにしました
14
14
  カーソル位置などは考慮していません
15
15
 
16
+ 2020/03/26 20:15 [ぎっとはぶのれぽじとり](https://github.com/lensouko/BlazorApp248757)に追加しました
16
17
 
17
18
  Index.razor
18
19
  ```C#

2

キーイベントのdown・up・press全部確認するようにしました。チェックキーをTabにしました

2020/03/26 11:16

投稿

len_souko
len_souko

スコア1367

answer CHANGED
@@ -8,6 +8,12 @@
8
8
  ゆーたかてまだ正式リリースじゃないプレビュー版で破壊的変更もちょくちょく起きてるんだしある程度は自力で何とかしないと
9
9
  ただし、.NET 5 preview-1 sdkを入れた場合はVSプレビュー版だとプロジェクトテンプレートが見れない罠があるので要注意
10
10
 
11
+ 2020/03/25 19:53
12
+ キーイベントをdown・up・press全部入れてログをまとめました
13
+ 質問文通りにtextareaの文字列にtabを追加するようにしました
14
+ カーソル位置などは考慮していません
15
+
16
+
11
17
  Index.razor
12
18
  ```C#
13
19
  @page "/"
@@ -22,83 +28,79 @@
22
28
  <a href="https://teratail.com/questions/248757">てらてーる248757</a>
23
29
 
24
30
  <p>
25
- onkeydownのぱてぃ~ん<br />
26
- <span style="color:red;">@msgdown</span>
31
+ <span style="color:red;">@msg</span>
27
32
  </p>
28
-
29
- <textarea @bind="txtareadown" @onkeydown="inputDown" @onkeydown:preventDefault="isPrEvDefdown"></textarea>
30
-
31
33
  <p>
34
+ <textarea @bind="txtarea"
35
+ @onkeydown="inputDown"
36
+ @onkeydown:preventDefault="isPrEvDefdown"
37
+ @onkeyup="inputUp"
38
+ @onkeyup:preventDefault="isPrEvDefup"
32
- onkeypressのぱてぃ~ん<br />
39
+ @onkeypress="inputPress"
33
- <span style="color:red;">@msgpress</span>
40
+ @onkeypress:preventDefault="isPrEvDefpress"></textarea>
34
41
  </p>
35
42
 
36
- <textarea @bind="txtareapress" @onkeypress="inputPress" @onkeypress:preventDefault="isPrEvDefpress"></textarea>
37
-
38
43
  <p>
39
- e.Keyのログ
44
+ きーログ
40
45
  <div style="height:200px;overflow-y:scroll;">
41
- @foreach (var k in KeyLog)
46
+ @foreach (var k in Log)
42
47
  {
43
48
  @k<br />
44
49
  }
45
50
  </div>
46
51
  </p>
47
52
 
48
- <p>
49
- e.Codeのログ
50
- <div style="height:200px;overflow-y:scroll;">
51
- @foreach (var c in CodeLog)
52
- {
53
- @c<br />
54
- }
55
- </div>
56
- </p>
57
-
58
53
  @code
59
54
  {
60
- List<string> KeyLog { get; set; } = new List<string>();
61
- List<string> CodeLog { get; set; } = new List<string>();
62
55
 
56
+ List<string> Log { get; set; } = new List<string>();
57
+
63
- string txtareadown { get; set; } = string.Empty;
58
+ string txtarea { get; set; } = string.Empty;
64
- string msgdown { get; set; } = string.Empty;
59
+ string msg { get; set; } = string.Empty;
60
+
65
61
  bool isPrEvDefdown { get; set; } = false;
66
62
 
67
63
  private void inputDown(KeyboardEventArgs e)
68
64
  {
69
- KeyLog.Add(e.Key);
70
- CodeLog.Add(e.Code);
71
- if (e.Key == "Enter")
65
+ isPrEvDefdown = IsKey(e, "Tab");
72
- {
73
- msgdown = "エンターはダメよ!";
74
- isPrEvDefdown = true;
75
- }
76
- else
77
- {
78
- msgdown = string.Empty;
79
- isPrEvDefdown = false;
80
- }
81
66
  }
82
67
 
83
- string txtareapress { get; set; } = string.Empty;
84
- string msgpress { get; set; } = string.Empty;
85
68
  bool isPrEvDefpress { get; set; } = false;
86
69
 
87
70
  private void inputPress(KeyboardEventArgs e)
88
71
  {
89
- KeyLog.Add(e.Key);
72
+ isPrEvDefpress = IsKey(e, "Tab");
73
+ }
74
+
75
+
76
+ bool isPrEvDefup { get; set; } = false;
77
+
90
- CodeLog.Add(e.Code);
78
+ private void inputUp(KeyboardEventArgs e)
79
+ {
80
+ isPrEvDefup = IsKey(e, "Tab");
81
+ }
82
+
83
+ private bool IsKey(KeyboardEventArgs e,string chkKey, [System.Runtime.CompilerServices.CallerMemberName] string member = "")
84
+ {
85
+ Log.Add($"{DateTime.Now.ToString("hh:mm:ss.fff")}:[{member}]Key({e.Key})Code({e.Code})");
91
- if (e.Key == "Enter")
86
+ if (e.Key == "Tab")
92
87
  {
93
- msgpress = "エンターはダメよ!";
88
+ msg = "たぶ";
89
+ txtarea = $"\t{txtarea}";
94
- isPrEvDefpress = true;
90
+ return true;
95
91
  }
96
92
  else
97
93
  {
98
- msgpress = string.Empty;
94
+ msg = string.Empty;
99
- isPrEvDefpress = false;
95
+ return false;
100
96
  }
101
97
  }
98
+
102
99
  }
100
+ ```
103
101
 
102
+ 動作確認ブラウザ
103
+ EdgeHTMLのEdge
104
+ ChroniumのEdge
104
- ```
105
+ Chrome
106
+ Firefox

1

StateHasChangedとmin-height:200px;いらんかったわ

2020/03/25 10:55

投稿

len_souko
len_souko

スコア1367

answer CHANGED
@@ -37,7 +37,7 @@
37
37
 
38
38
  <p>
39
39
  e.Keyのログ
40
- <div style="height:200px;min-height:200px;overflow-y:scroll;">
40
+ <div style="height:200px;overflow-y:scroll;">
41
41
  @foreach (var k in KeyLog)
42
42
  {
43
43
  @k<br />
@@ -47,7 +47,7 @@
47
47
 
48
48
  <p>
49
49
  e.Codeのログ
50
- <div style="height:200px;min-height:200px;overflow-y:scroll;">
50
+ <div style="height:200px;overflow-y:scroll;">
51
51
  @foreach (var c in CodeLog)
52
52
  {
53
53
  @c<br />
@@ -57,14 +57,11 @@
57
57
 
58
58
  @code
59
59
  {
60
-
61
60
  List<string> KeyLog { get; set; } = new List<string>();
62
61
  List<string> CodeLog { get; set; } = new List<string>();
63
62
 
64
63
  string txtareadown { get; set; } = string.Empty;
65
-
66
64
  string msgdown { get; set; } = string.Empty;
67
-
68
65
  bool isPrEvDefdown { get; set; } = false;
69
66
 
70
67
  private void inputDown(KeyboardEventArgs e)
@@ -81,14 +78,10 @@
81
78
  msgdown = string.Empty;
82
79
  isPrEvDefdown = false;
83
80
  }
84
- this.StateHasChanged();
85
81
  }
86
82
 
87
-
88
83
  string txtareapress { get; set; } = string.Empty;
89
-
90
84
  string msgpress { get; set; } = string.Empty;
91
-
92
85
  bool isPrEvDefpress { get; set; } = false;
93
86
 
94
87
  private void inputPress(KeyboardEventArgs e)
@@ -105,8 +98,7 @@
105
98
  msgpress = string.Empty;
106
99
  isPrEvDefpress = false;
107
100
  }
108
- this.StateHasChanged();
109
101
  }
102
+ }
110
103
 
111
- }
112
104
  ```