掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的に作成したボタンを削除するには? (ID:142168)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは、 ただ今、VB.NET・Visual Studio2005・XP SP3で、 MonthCalendarコントロールを使用したWindowsアプリケーションを作成しております。 そこで質問なのですが、カレンダー(DataGridViewで作成)の横に行事名が書いてあるボタンを並べて、 そのボタンを、ドラック&ドロップで、カレンダーの上に持っていき、 更に、そのボタンを右クリックでサイズを変更し、 そのボタンの下にある日付にボタンに書いてある行事をデータベースに登録するというものを作成しております。それで、石飛びの処理(1日空いて次の日にボタンを再配置する)をやっているのですが、ボタンをカレンダーの上を ダブルクリックで、その場に新規で作成するというものを考えており、ボタンを作成はうまくいったのですが、その新規で作成したボタンを削除するという処理がうまくできなくって困っております。一応、ダブルクリックで新規に作成する処理は、 〜メンバ変数〜 Dim Winter_Vacation_Count As Integer Dim Winter_Vacation_Btn As New Button() Dim Winter_Vacation_Count as integer Private Sub DGV_Cal_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DGV_Cal.MouseDoubleClick 〜省略〜 '動的に作成するボタンのインスタンスを生成 Winter_Vacation_Btn = New Button '追加するButtonのプロパティを設定する Winter_Vacation_Btn.Name = "Btn_Winter_Vacation" & Winter_Vacation_Count 'Label_Name Winter_Vacation_Btn.BackColor = Color.SkyBlue 'BackColor Winter_Vacation_Btn.Font = New Font("MS UI Gothic", 12) 'Font Winter_Vacation_Btn.ForeColor = Color.Purple 'ForeColor Winter_Vacation_Btn.Location = New Point(e.X, e.Y) 'Location Winter_Vacation_Btn.Size = New Size(120, 30) 'Size Winter_Vacation_Btn.Text = "冬季休暇" 'Text '行事ボタンを、Formに追加する DGV_Cal.Controls.Add(Winter_Vacation_Btn) 'Winter_Vacation_Countに、1を足す Winter_Vacation_Count = Winter_Vacation_Count + 1 '行事ボタンを、最前面にする Winter_Vacation_Btn.BringToFront() End Sub となっており、削除する処理は、複数ある可能性があるので、ボタンで行っています。そのボタンの処理が、 Private Sub Btn_Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Cancel.Click For Each ctrl As Control In DGV_Cal.Controls If ctrl.Name Like "Btn_Winter*" Then DGV_Cal.Controls.Remove(ctrl) End If Next となっております。この処理で実行すると、なぜか複数(5〜6個)のボタンを配置すると、いくつか削除されて、いくつかは残ってしますのです。 念のため、確認したのが、一応該当するコントロールが取得されているか、 ListBoxに表示させてみたら、全て取得されていました。 デバックをしてみると、Removeを入れると、このような現象が起こりました。 この解決方法を知っていたら、どなたかぜひご教授下さい。 お願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.