VB2008 DataGridViewDisableButtonで困っています。
ボタン表示、Enabled判定が上手く出来ません。
VB2008初心者です。
MSDNの「方法 : Windows フォーム DataGridView コントロールのボタン列にあるボタンを無効にする」
http://msdn.microsoft.com/ja-jp/library/ms171619 … を参考にしてプログラムを作成しようとしています。
上記のページに書かれている方法は、チェックボックスの値でボタンのEnabledを操作していますが、
そこの部分を変更し、カラム1の内容によってEnabledを操作したいと思っています。
作り:
フォーム1からフォーム2を開く。
フォーム2のDataGridViewにはカラム1、カラム2はフォームデザイン時に既に設定していて、
フォーム2のLOAD時に「DataGridViewDisableButtonColumn」を追加して、Enabledを判定しています。
殆どを上記サイトから引用しており、上記サイトの「Public Class DataGridViewDisableButtonColumn」以下はそのまま使用しています。
困っている現象:
最初にフォーム2を開いた際には、ボタンのテキストの表示、Enabledの判定も上手く出来ています。
ところが、一度フォーム2を閉じて、再度同じ条件で、フォーム2を開くと、ボタンは表示されますが、ボタンのテキストも表示されてなく、真っ白(ボタンの色)で、Enabledも判定出来ていません。
試した策:
フォーム2を閉じる際に、LOAD時に追加したDataGridViewDisableButtonColumnの削除を追加してみましたが、結果はかわりませんでした。
msdnから引用した内容については、ボタンのイメージを描画していると考えています。
フォームを閉じる際に、このボタンイメージを削除する必要があるのでしょうか?
フォーム1での条件によって、データ量が異なるため、DataGridViewが便利と思い使用しています。
上記の現象を回避するにはどの様な処理を加えればよいでしょうか?
ご教示お願いします。
No.1ベストアンサー
- 回答日時:
その現象を確認できる最小手順とコードおよびデータを公開しましょう
Form2のLoadイベントなどで判定しているのであればその判定が期待通り動作しているのか
ステップ実行などで追いかける必要があると思いますよ
この回答への補足
redfox63さんありがとうございます。
以下がLOAD時のコードと、ロード時に取得するデータ例です。
よろしくお願いします。
名前 生年月日 住所有無(FLAG)
花子 19800630 1
太郎 19801122 0
---
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.VisualStyles
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.DATATABLEADAPTER.FillBy(Me.DSET.DTABLE, CODE)
Call DATAGRIDVIEW_EDIT()
End Sub
Private Sub btnCLOSE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCLOSE.Click
Me.Close()
End Sub
Sub DATAGRIDVIEW_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As EventArgs)Handles DATAGRIDVIEW.CurrentCellDirtyStateChanged
If DATAGRIDVIEW.IsCurrentCellDirty Then
DATAGRIDVIEW.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
Public Sub DATAGRIDVIEW_EDIT()
Dim columnZ As New DataGridViewDisableButtonColumn()
columnZ.Name = "BTN"
DATAGRIDVIEW.Columns.Add(columnZ)
DATAGRIDVIEW.Columns("BTN").HeaderText = "表示"
For ROW As Integer = 0 To DATAGRIDVIEW.RowCount - 1
Dim BTNCELL As DataGridViewDisableButtonCell = _
CType(DATAGRIDVIEW.Rows(ROW).Cells("BTN"), _
DataGridViewDisableButtonCell)
Dim FLAGCELL As DataGridViewTextBoxCell = _
CType(DATAGRIDVIEW.Rows(ROW).Cells("FLAG"), _
DataGridViewTextBoxCell)
DATAGRIDVIEW.Rows(ROW).Cells("BTNCELL").Value = "表示"
If FLAGCELL.Value > 0 Then
DATAGRIDVIEW.EnableHeadersVisualStyles = False
DATAGRIDVIEW.Columns("BTN").HeaderCell.Style.BackColor = Color.RED
BTNCELL.Enabled = Not CType(0, [Boolean])
Else
BTNCELL.Enabled = Not CType(-1, [Boolean])
End If
Next
DATAGRIDVIEW.Invalidate()
End SUB
END CLASS
redfox63さん
ありがとうございました。
色々とデバックしてみたところ、FORM2の開き方
モーダル、モードレスで違いがあることがわかりました。
このたびはお世話になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAでユーザーフォームが...
-
ExcelVBAのユーザーフォームの...
-
Excel VBAで別のブックからユ...
-
'ユーザーフォーム右上隅の[×...
-
ユーザーフォームのラベルに時...
-
VBAでユーザーフォームを再表示...
-
ユーザーフォームのラベルに時...
-
Form_Load と Form_Activate の...
-
ユーザーフォーム上に現在日時...
-
パソコンの画面に合わせてユー...
-
VB2008 DataGridViewDisableBut...
-
アクセスのUserFormにはInitial...
-
エクセルVBAのフォームを最...
-
フォームの二重起動の阻止
-
【VBAユーザーフォームで閉じる...
-
ACCESSのフォーム、開くんです...
-
テキストボックスの番号の取得
-
複数のフォームを1つのフォー...
-
keypressイベントでEnterキー(a...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
エクセルVBAのフォームを最...
-
クリックイベントなのに、2回ク...
-
ユーザーフォームのテキストボ...
-
モーダルフォームとモードレス...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
Hideについて(.NET)
-
ACCESSのフォーム、開くんです...
-
MSGBOXのフォント大きさ変更
-
Excelにて、ユーザーフォームで...
-
【VBAユーザーフォームで閉じる...
-
ユーザーフォーム上に現在日時...
-
VBA(エクセル)のユーザー...
-
access2021 更新前に処理をしたい
-
Accessで、一つのフォーム画面...
-
コントロールの存在確認
-
Microsoft Formsの「個人情報や...
-
複数モニタ使用時のフォームの...
おすすめ情報