
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
以上です。
No.1ベストアンサー
- 回答日時:
DataGridViewEx.vbのあるプロジェクトを一度ビルドします
ツールパレットの適当な位置(全般タブなど)で右クリックして
アイテムの選択 > 参照 > DataGridViewEx.vbを構築したEXEファイルをクリック > 開く > 追加されたコントロールにチェックをつけて > OK
といった具合にツールパレットに登録してから コントロールをフォームに張ってみましょう
Designer.vbを直接編集するなというのはIDE側でのプロパティやコレクションの管理と食い違うことを防ぐための警告だと思います
プロパティウィンドウなどで設定可能ものは極力そちらで行いましょう
ってことだと思いますよ
コードで変更してもすぐにプロパティウィンドウに反映されない場合もあると思いますから
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) EXCELのセル相互同期用のVBAでの不具合 3 2022/08/10 11:44
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBとAPI のからませかた?
-
Designer.vbは直接コードをいじ...
-
マイクロソフトがvbを捨てたの...
-
excel vbaから実行するexe実行...
-
意味不明の実行時エラーで困っ...
-
VBAでArrayListを使う為の「msc...
-
Visual Studio 「AnyCpu」について
-
URLを指定して直接印刷って出来...
-
ASCII印刷可能文字は何文字?
-
Windows PowerShellでC言語を実...
-
ディストリビューションで作成...
-
A4の2枚をA3の1枚にする編集方法?
-
VB.NETでDLLを読み込ませる時に...
-
オートメーションエラー(214741...
-
OWCを使用しブラウザにグラフを...
-
VBでExcel印刷する時のプリンタ...
-
ManagementClassが見つからない。
-
VBAでOutlookを終了させたい Ex...
-
MS Visual Studio 6.0のEnterpr...
-
印刷ダイアログを表示させない方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Designer.vbは直接コードをいじ...
-
デザインタブが表示されない
-
Form間のデータ渡しについて
-
マイクロソフトがvbを捨てたの...
-
VB6のIISアプリの作り方
-
VB.NETのリソース内のEXCELを開...
-
シャットダウンの関数
-
VBからオープン可能なCOMポート数
-
VB.NETでの円形グラデーション...
-
タスクトレイ
-
IEをVBAで操作する際、IEの表示...
-
意味不明の実行時エラーで困っ...
-
Visual Studio 「AnyCpu」について
-
ManagementClassが見つからない。
-
VBAでArrayListを使う為の「msc...
-
「読み込み違反」が起きたとき...
-
excel vbaから実行するexe実行...
-
vba 時間の引き算 例えば 15:00...
-
印刷ダイアログを表示させない方法
-
VBAでOutlookを終了させたい Ex...
おすすめ情報