2

メモ帳のクローン プログラムにこのコードのチャンクがあります。これは、私のカラットの位置を追跡するためのものであり、RichTextBox私にとっては問題なく動作しています。

private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
    {
        Curpos();
    }

    private static int EM_LINEINDEX = 0xbb;
    [DllImport("user32.dll")]
    extern static int SendMessage(IntPtr hwnd, int message, int wparam, int lparam);

    private void Curpos()
    {
        {
            int line, col, index;
            index = richTextBox1.SelectionStart;
            line = richTextBox1.GetLineFromCharIndex(index);
            col = index - SendMessage(richTextBox1.Handle, EM_LINEINDEX, -1, 0);
            Lblcurpos.Text = "Line: " + (++line).ToString() + ", Column:"  + (++col).ToString();
        }
    }

Escキーでプログラムを閉じることができるようにコードを追加するまで、私にとっては完全に機能していました。これが私の Esc キーのコードです。

private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Escape)
        {
            this.Close();
        }
    }

編集:ここに問題があります:

index = richTextBox1.SelectionStart;

これを行っているとき、プログラムを正常に実行し、テキストRichTextBoxをすべて入力できますが、Esc キーを押すと、次のように表示されます。

破棄されたオブジェクトにアクセスできません オブジェクト名: 'RichTextBox'

次に、次のように述べています。

トラブルシューティングのヒント: リソースを使用する前に、リソースを解放していないことを確認してください。この例外に関する一般的なヘルプを取得する

私に何ができるかについてのアイデアはありますか?ショートカット キーを使用しようとしましたが、ショートカットに使用できる Esc キーがありません。別のショートカットを実行するか、この問題を修正するための助けがあれば、よろしくお願いします!!

4

2 に答える 2