-1

複数行のテキストボックスとその下にボタンがあります。

VB.NET、ウィンフォーム、.NET 2.0

System.Windows.Forms.Textbox

マルチライン = True

AcceptsReturn = True

AcceptsTab = False

CausesValidation = False

明示的にコード化されたイベントはありません。

Enter キーで改行を挿入し、フォーカスを次のコントロール (ボタン) に移動させないようにしたいと思います。

Tab キーで常にタブ オーダーの次のコントロール (ボタン) にフォーカスを移動したいと思います。

代わりに、Enter キーで改行が 1 つ挿入され、フォーカスが次のコントロール (ボタン) に移動します。これは Ctrl-Enter でも行われますが、これには本当に困惑します!

ヘルプ ファイルを読んだり、Google で検索したりすることで、必要な方法で動作するはずです。しかし、明らかに私は何かが欠けています。私は何を間違っていますか?

4

3 に答える 3

2

この種の問題に対して私がよく使用する方法は、問題の原因を 1 つに絞り込めるまでコードの追加と削除を繰り返すことです。

たとえば、編集ボックスが 1 つとその他のコントロールが 1 つだけの非常に単純なプロジェクトを作成することから始めて、その動作を確認することができます。このコードが意図したとおりに動作する場合は、コードを少しずつ追加して、単純なプロジェクトを意図した最終製品に近づけ、バグが発生するまで続けることができます。次に、追加したコードの最後の部分を見て、バグがなくなるまでその部分を差し引くことができるかどうかを確認します。これを数回繰り返すと、犯人を見つけるのに役立つ場合があります。

または、既存の (不正な動作をしている) コードから始めて、バグがなくなるまで単純化することもできます。次に、最後に削除したものの一部を元に戻し、上記のように繰り返します。

最後に、この場合、エディット コントロールのLeaveイベントのイベント ハンドラーを追加して、ハンドラーにブレークポイントを配置することもできます。BP がヒットしたら、コールスタックをチェックして、どのコードがフォーカスの変更を引き起こしたかを把握できるかどうかを確認します。これを機能させるには、おそらく、ソースがないコードを表示するようにデバッガーを構成する必要があります (つまり、デバッガーで [マイ コードのみ] オプションを無効にします)。グループの助けを借りて解読したい場合は、(トリミングされた)コールスタックを質問に貼り付けることもできます。

ps上記の反復デバッグ方法の名前を知っている人はいますか? そうでない場合は、数学関数の根を繰り返し見つけるためのニュートン法に似ているため、ニュートン法(またはおそらくニュートン法)と呼ぶことを提案できます。

于 2009-01-22T03:46:06.150 に答える
0

絶対にそうすべきではありません。私が考えることができる唯一のことは、複数の行に対応するのに十分な高さがないということです. 追加してみてください...

textBox1.ScrollBars = ScrollBars.Vertical

そうでなければ、私は知りません。空のプロジェクトを作成し、1 つのテキスト ボックスと 1 つのボタンでプロパティを設定するフォームを作成して、何が起こるかを確認してみてください...

于 2009-01-22T00:53:42.537 に答える