タイトル : Re^4: CheckedListBox内での移動 投稿日 : 2009/09/02(Wed) 09:50 投稿者 : ダンボ
> > 負えません。2番目は私もみつけたのですが、C#なのであきらめました。 > > これをVB.netでおきかえるのでしょうか。 > > 適切な方法があればお教えください。 C#とVB.Netは親和性がいいです。Cの仮面を持った.NetFramework、VBの仮面を持った.NetFrameworkですから。 だから自動変換も可能でしょう。下記はなるべく原文に忠実に手動翻訳してみました。 問題点:原案はListBoxだったからこれで良いが、bin さんの希望はCheckedListBox。 Checkedステータスの移動は追加しなければいけない。 更にMouseDownあたりに一工夫加えないとCheck操作が無視される。 Public Class Form1 Dim listSelectNo As Integer Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim str As String() = {"aaa", "bbb", "ccc", "ddd", "eee"} CheckedListBox1.Items.AddRange(str) End Sub Private Sub CheckedListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckedListBox1.MouseDown ' //移動元のインデックスを取得 Dim list As CheckedListBox = CType(sender, CheckedListBox) listSelectNo = list.SelectedIndex End Sub Private Sub CheckedListBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles CheckedListBox1.MouseUp ' //移動先のインデックスを取得 Dim list As CheckedListBox = CType(sender, CheckedListBox) Dim listChangeNo As Integer = list.SelectedIndex Dim tmpData As Object ' //移動元のデータを取得 tmpData = list.Items(listSelectNo) ' //移動元のデータを削除 list.Items.RemoveAt(listSelectNo) ' //移動先にデータを追加 list.Items.Insert(listChangeNo, tmpData) ' //選択先のインデックスを指定 list.SelectedIndex = listChangeNo End Sub End Class |