一連のコントロールをドラッグして、特定のタイプ (TextBoxes) のコントロールを選択できるようにしたいと考えています。
ドラッグ操作が完了したら、選択した各 TextBox に入力される値をユーザーに求める入力ボックスを表示します (はい、VB .dll を参照/使用する必要があります)。
これはできますか?(もちろんですが、どうやって?)
または、同じことを達成する別の方法はありますか (ユーザーが複数のコントロールをすばやく選択し、それらすべてに対して一度にアクションを実行できるようにする)?
更新しました:
私はこの種の作業を行っています.「警告」または「落とし穴」は、それが機能するためにユーザーに MessageBox.Show() をポップアップする必要があるということです. 基本的に、私は:
マウスの右ボタンが選択された場合、コンテナー (私の場合は FlowLayoutPanel) の MouseDown イベントでブール値を true に設定します。
マウスの右ボタンが選択された場合、コンテナーの MouseUp イベントで同じブール値を false に設定します。
次に、そのフォームのすべての TextBoxes に対して共有の MouseHover イベント ハンドラーを用意します。ブール値が true の場合、BackColor を (私の場合は Window から Gainsboro に) 変更します。
コンテナーの MouseUp イベントでは、InputBox (VB .dll の参照/インポート/使用) も使用して、"強調表示された" TextBox に共通の値をユーザーに入力するように要求します。次に、それらをループして、その BackColor を持つものを探し、ユーザーが指定した値をそれらの Text プロパティに代入します。
出来上がり!
残念ながら、TextBoxes の Modified プロパティは、この方法で値を割り当てても変更されないように見えるため、それを回避する必要があり (明示的に [保存] ボタンを有効に設定する)、複製するコードをさらに追加する必要がありました。ユーザーが入力する値を制限する KeyPressed コード。
したがって、少し厄介ではありますが、もちろん可能です。MessageBox.Show() が「バグ」なのか機能なのかはまだわかりませんが...
関連する投稿:なぜ MouseHover イベントは、messagebox.show() またはブレークポイントがその前に発生した場合にのみ呼び出されるのですか?