回答編集履歴
3
ソリューションをGitHubに登録したので追記
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にしました
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;">@
|
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
|
-
|
39
|
+
@onkeypress="inputPress"
|
33
|
-
|
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
|
-
|
44
|
+
きーログ
|
40
45
|
<div style="height:200px;overflow-y:scroll;">
|
41
|
-
@foreach (var k in
|
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
|
58
|
+
string txtarea { get; set; } = string.Empty;
|
64
|
-
string
|
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
|
-
|
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
|
-
|
72
|
+
isPrEvDefpress = IsKey(e, "Tab");
|
73
|
+
}
|
74
|
+
|
75
|
+
|
76
|
+
bool isPrEvDefup { get; set; } = false;
|
77
|
+
|
90
|
-
|
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 == "
|
86
|
+
if (e.Key == "Tab")
|
92
87
|
{
|
93
|
-
|
88
|
+
msg = "たぶ!!";
|
89
|
+
txtarea = $"\t{txtarea}";
|
94
|
-
|
90
|
+
return true;
|
95
91
|
}
|
96
92
|
else
|
97
93
|
{
|
98
|
-
|
94
|
+
msg = string.Empty;
|
99
|
-
|
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;いらんかったわ
answer
CHANGED
@@ -37,7 +37,7 @@
|
|
37
37
|
|
38
38
|
<p>
|
39
39
|
e.Keyのログ
|
40
|
-
<div style="height:200px;
|
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;
|
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
|
```
|