DOBON.NETプログラミング道掲示板

■35596 / 親記事)  DataGridViewでAlt+Enterで改行したい
  
□投稿者/ aks 一般人(1回)-(2024/04/08(Mon) 20:13:16)
  • アイコン環境/言語:[.NET Framework4.8 C# Windows10 VS2022 ] 
    分類:[.NET] 

    お世話になります。
    
    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;
        }
    }
    

マルチポストを報告
違反を報告
引用返信 削除キー/
■35597 / ResNo.1)  Re[1]: DataGridViewでAlt+Enterで改行したい
□投稿者/ KOZ 一般人(35回)-(2024/04/09(Tue) 00:38:33)
  • アイコン
    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);
        }
    }
    

違反を報告
引用返信 削除キー/
■35598 / ResNo.2)  Re[2]: DataGridViewでAlt+Enterで改行したい
□投稿者/ aks 一般人(2回)-(2024/04/13(Sat) 14:17:57)
  • アイコンKOZ様

    ご回答いただきありがとうございます。
    教えていただいた内容で試したところ解決しております。

解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -