作成日: 2022/06/20 最終更新日: 2022/12/21
文書種別
不具合
発生環境
.NET 6
状況
修正済み
詳細
C1MaskedTextBoxのEditMaskを設定し、ShortcutsEnabledプロパティをTrueにしても、クリップボード経由のコピー、切り取り、貼り付け(キーボードショートカットのコピー (Ctrl+C) 、切り取り (Ctrl+X) 、貼り付け (Ctrl+V) )が機能しません。
回避方法
この問題は2022J v3(4.5.20223.584)で修正されました。
※修正版を適用しない場合の回避方法は以下の通りです。
C1MaskedTextBoxのKeyDownイベントにて、Ctrl+C、Ctrl+XおよびCtrl+Vキーが押されたときにC1MaskedTextBoxのコピー、テキストクリア、および貼り付けメソッドを手動で呼び出す方法が考えられます。
フォーム上に、C1MaskedTextBoxおよび標準にMaskedTextBoxを配置し、下記コードを追加して動作をご確認ください。
◎サンプルコード(VB)
※修正版を適用しない場合の回避方法は以下の通りです。
C1MaskedTextBoxのKeyDownイベントにて、Ctrl+C、Ctrl+XおよびCtrl+Vキーが押されたときにC1MaskedTextBoxのコピー、テキストクリア、および貼り付けメソッドを手動で呼び出す方法が考えられます。
フォーム上に、C1MaskedTextBoxおよび標準にMaskedTextBoxを配置し、下記コードを追加して動作をご確認ください。
◎サンプルコード(VB)
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' c1MaskedTextBox
C1MaskedTextBox1.EditMask = "###.##"
C1MaskedTextBox1.ShortcutsEnabled = True
' MS maskedTextBox
maskedTextBox1.Mask = "###.##"
End Sub
Private Sub C1MaskedTextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles C1MaskedTextBox1.KeyDown
' 「Ctrl + V」押下時
If ((e.Control = True) AndAlso (e.KeyCode = Keys.V)) Then
C1MaskedTextBox1.Paste()
'「Ctrl + C」押下時
ElseIf ((e.Control = True) AndAlso (e.KeyCode = Keys.C)) Then
C1MaskedTextBox1.Copy()
'「Ctrl + X」押下時
ElseIf ((e.Control = True) AndAlso (e.KeyCode = Keys.X)) Then
C1MaskedTextBox1.Copy()
C1MaskedTextBox1.Text = ""
C1MaskedTextBox1.EditMask = "###.##"
'「Delete」押下時
ElseIf (e.KeyCode = Keys.Delete) Then
C1MaskedTextBox1.Text = ""
C1MaskedTextBox1.EditMask = "###.##"
End If
End Sub
End Class
◎サンプルコード(C#)
namespace C1MaskedTextBox_Net6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// c1MaskedTextBox
c1MaskedTextBox1.EditMask = "###.##";
c1MaskedTextBox1.ShortcutsEnabled = true;
// MS maskedTextBox
maskedTextBox1.Mask = "###.##";
}
private void C1MaskedTextBox1_KeyDown(object? sender, KeyEventArgs e)
{
//「Ctrl + V」押下時
if (e.Control && e.KeyCode == Keys.V)
{
c1MaskedTextBox1.Paste();
}
//「Ctrl + C」押下時
else if (e.Control && e.KeyCode == Keys.C)
{
c1MaskedTextBox1.Copy();
}
//「Ctrl + X」押下時
else if (e.Control && e.KeyCode == Keys.X)
{
c1MaskedTextBox1.Copy();
c1MaskedTextBox1.Text ="";
c1MaskedTextBox1.EditMask = "###.##";
}
//「Delete」押下時
else if (e.KeyCode == Keys.Delete)
{
c1MaskedTextBox1.Text = "";
c1MaskedTextBox1.EditMask = "###.##";
}
}
}
}