お世話になります。 DataGridViewで、エクセルのようにセルをAlt+Enterで改行させる事は可能でしょうか? Shift+Enterで改行しないように実装はできましたが、先に進めず困っておりましてご教授願います。 よろしくお願いいたします。 //DataGridViewの派生クラスを作成 //デザイナーでtextboxの列を1つ追加済み。 public class DataGridView_Kai : DataGridView { protected override bool ProcessCmdKey(ref Message msg, Keys KeysVal) { //Shift+Enterの同時押しを無効化 if ((KeysVal & Keys.KeyCode) == Keys.Enter && (KeysVal & Keys.Modifiers) == Keys.Shift) { return true; } //Alt+Enterの同時押下時に改行。。。 if ((KeysVal & Keys.KeyCode) == Keys.Enter && (KeysVal & Keys.Modifiers) == Keys.Alt) { //テストでKeysValを0にしても、下のセルへ移動しますので、実装場所が違うのではないかと考えております。 } return base.ProcessCmdKey(ref msg, KeysVal); } } public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { dataGridView_Kai1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dataGridView_Kai1.RowCount = 10; } }
2024/04/10(Wed) 05:38:01 編集(投稿者) ■No35596に返信(aksさんの記事) > DataGridViewで、エクセルのようにセルをAlt+Enterで改行させる事は可能でしょうか? こんな感じでしょうか? public class DataGridView_Kai : DataGridView { protected override bool ProcessCmdKey(ref Message msg, Keys KeysVal) { if (IsCurrentCellInEditMode) { TextBox textBox = EditingControl as TextBox; if (textBox != null && textBox.Multiline) { switch (KeysVal) { case Keys.Enter | Keys.Shift: return true; case Keys.Enter | Keys.Alt: string newLine = Environment.NewLine; if (textBox.MaxLength == 0 || textBox.TextLength - textBox.SelectionLength + newLine.Length <= textBox.MaxLength) { textBox.SelectedText = newLine; } return true; } } } return base.ProcessCmdKey(ref msg, KeysVal); } }