重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VB2008を使っています。フォームに貼り付けたDataGridViewコントロールをそのまま使っていましたが、拡張したDataGridViewExを使うときにForm1.Designer.vbを開いて直接コード編集すると良くないのでしょうか?
変更しようとすると、元のコードに以下のようなコメントが書いてありました。(コード エディタを使って変更しないでください)

デザイナだけでできないので、クラスダイヤグラムの表示から直接フォームを定義しているコードを書き換えて、拡張コンポーネント名に置き換えて変更すると、動作しましたがこのやり方は正しいのでしょうか?

---
【Form1.Designer.vb】

'Windows フォーム デザイナで必要です。
Private components As System.ComponentModel.IContainer

'メモ: 以下のプロシージャは Windows フォーム デザイナで必要です。
'Windows フォーム デザイナを使用して変更できます。
'コード エディタを使って変更しないでください。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.StatusStrip1 = New System.Windows.Forms.StatusStrip

---
やろうとしたこと、以下のクラスファイルDataGridViewEx.vbを作成し、
Form1.Designer.vbの次の2箇所を変更しました。

【Form1.Designer.vb】

(1)
Private Sub InitializeComponent()
Me.StatusStrip1 = New System.Windows.Forms.StatusStrip
'Me.DataGridView1 = New System.Windows.Forms.DataGridView
Me.DataGridView1 = New DataGridViewEx

(2)
'Friend WithEvents DataGridView1 As System.Windows.Forms.DataGridView
Friend WithEvents DataGridView1 As DataGridViewEx

---
【DataGridViewEx.vb】 拡張したクラス

Public Class DataGridViewEx
Inherits DataGridView

Protected Overrides Function ProcessDialogKey( _
ByVal keyData As Keys) As Boolean
'Enterキーが押された時は、ブラウザを開き、入力キーを無視する
If (keyData And Keys.KeyCode) = Keys.Enter Then
'Return Me.ProcessTabKey(keyData)
Process.Start("http://www.yahoo.com") 
Return True '←これで無視しているのかな?
End If
Return MyBase.ProcessDialogKey(keyData)
End Function

Protected Overrides Function ProcessDataGridViewKey( _
ByVal e As KeyEventArgs) As Boolean
'Enterキーが押された時は、ブラウザを開き、入力キーを無視する
If e.KeyCode = Keys.Enter Then
'Return Me.ProcessTabKey(e.KeyCode)
Process.Start("http://www.yahoo.com")
Return True '←これで無視しているのかな?
End If
Return MyBase.ProcessDataGridViewKey(e)
End Function
End Class

以上です。

A 回答 (1件)

DataGridViewEx.vbのあるプロジェクトを一度ビルドします



ツールパレットの適当な位置(全般タブなど)で右クリックして
アイテムの選択 > 参照 > DataGridViewEx.vbを構築したEXEファイルをクリック > 開く > 追加されたコントロールにチェックをつけて > OK

といった具合にツールパレットに登録してから コントロールをフォームに張ってみましょう

Designer.vbを直接編集するなというのはIDE側でのプロパティやコレクションの管理と食い違うことを防ぐための警告だと思います
プロパティウィンドウなどで設定可能ものは極力そちらで行いましょう
ってことだと思いますよ

コードで変更してもすぐにプロパティウィンドウに反映されない場合もあると思いますから
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!