tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルCheckedListBox内での移動
記事No9329
投稿日: 2009/09/01(Tue) 18:06
投稿者bin
 Vb2008 express edition を使用しています。
 CheckedListBoxで項目をドラッグ&ドロップで
移動させ、順番をかえたいのですが、方法が
わかりません。サンプルを探してみたのですが、
なかなか見つかりません。
 方法、あるいはサンプル、をお教えください。

[ツリー表示へ]
タイトルRe: CheckedListBox内での移動
記事No9330
投稿日: 2009/09/01(Tue) 21:44
投稿者ダンボ
> なかなか見つかりません。

「ListBox 順番 ドラッグ ドロップ」でgoogle検索したら、すぐに
見つかりましたがね。
http://support.microsoft.com/kb/167746/ja      力づく
http://note.phyllo.net/?eid=563651      こっちの方がスマートか
http://www.kumei.ne.jp/c_lang/sdk3/sdk_215.htm  ゴリゴリと

[ツリー表示へ]
タイトルRe^2: CheckedListBox内での移動
記事No9331
投稿日: 2009/09/01(Tue) 22:21
投稿者bin
> > なかなか見つかりません。
>
> 「ListBox 順番 ドラッグ ドロップ」でgoogle検索したら、すぐに
> 見つかりましたがね。
> http://support.microsoft.com/kb/167746/ja      力づく
> http://note.phyllo.net/?eid=563651      こっちの方がスマートか
> http://www.kumei.ne.jp/c_lang/sdk3/sdk_215.htm  ゴリゴリと

 レス有難うございます。
  これらはたしか下記のようなのですが。
 1  VB6.0
  2  C#
  3  よくわかりません。
 
私が今勉強しているのは VB2008 express edition なのでどれも私の手に
負えません。2番目は私もみつけたのですが、C#なのであきらめました。
これをVB.netでおきかえるのでしょうか。
 適切な方法があればお教えください。
 

[ツリー表示へ]
タイトルRe^3: CheckedListBox内での移動
記事No9332
投稿日: 2009/09/01(Tue) 23:56
投稿者しんご
> 私が今勉強しているのは VB2008 express edition なのでどれも私の手に
> 負えません。

何を勉強しているかなんて、こちらは知ったこっちゃありません。
手に負えないんじゃなくて、やろうとしないだけでしょう。
ロジックがわかれば、プログラム言語は関係ないと思いますが?

教えていただいた3つのサイトをよく読めば、
ロジックはわかるはずですが。
特にC#で書かれた真ん中のサイトをよく理解すれば
プログラムを書けるようなると思いますが、どうでしょうか?

ちなみにロジックは理解できているのですか?
プログラムを書くことが大事ではなく、
ロジックを理解することが大事なのです。

[ツリー表示へ]
タイトルRe^3: CheckedListBox内での移動
記事No9333
投稿日: 2009/09/02(Wed) 01:16
投稿者太郎冠者
 >  私が今勉強しているのは VB2008 express edition なのでどれも私の手に
> 負えません。2番目は私もみつけたのですが、C#なのであきらめました。
> これをVB.netでおきかえるのでしょうか。
>  適切な方法があればお教えください。

この様な便利なサイトもあるので活用して下さい。
[Convert C# to VB.NET]
http://www.developerfusion.com/tools/convert/csharp-to-vb/

[ツリー表示へ]
タイトルRe^4: CheckedListBox内での移動
記事No9335
投稿日: 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

[ツリー表示へ]
タイトルRe^5: CheckedListBox内での移動
記事No9343
投稿日: 2009/09/02(Wed) 16:31
投稿者bin
> > > 負えません。2番目は私もみつけたのですが、C#なのであきらめました。
> > > これをVB.netでおきかえるのでしょうか。
> > >  適切な方法があればお教えください。
>
>
> C#とVB.Netは親和性がいいです。Cの仮面を持った.NetFramework、VBの仮面を持った.NetFrameworkですから。
> だから自動変換も可能でしょう。下記はなるべく原文に忠実に手動翻訳してみました。
>
> 問題点:原案はListBoxだったからこれで良いが、bin さんの希望はCheckedListBox。
>     Checkedステータスの移動は追加しなければいけない。
>     更にMouseDownあたりに一工夫加えないとCheck操作が無視される。
>

  ダンボ 様 しんご 様 太郎冠者 様

 きびしいご叱責、貴重な情報、を頂き、またダンボ様にはお手数をお掛けし
申し訳ありません。ダンボ様の書かれたものを使用させて頂き、勉強したいと
思います。 皆様 有難うございました。
 

[ツリー表示へ]
タイトルRe^6: CheckedListBox内での移動
記事No9344
投稿日: 2009/09/02(Wed) 16:55
投稿者ダンボ
> > 問題点:原案はListBoxだったからこれで良いが、bin さんの希望はCheckedListBox。
> >     Checkedステータスの移動は追加しなければいけない。

下記でうまく動いたからご参考までに(苦労しないと勉強にならないか?)

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
        If listChangeNo <> listSelectNo Then
            Dim tmpData As Object, tmpState As CheckState
            '        //移動元のデータを取得
            tmpData = list.Items(listSelectNo)
            tmpState = list.GetItemCheckState(listSelectNo)
            '        //移動元のデータを削除
            list.Items.RemoveAt(listSelectNo)
            '        //移動先にデータを追加
            list.Items.Insert(listChangeNo, tmpData)
            list.SetItemCheckState(listChangeNo, tmpState)
            '        //選択先のインデックスを指定
            list.SelectedIndex = listChangeNo
        End If
    End Sub
End Class

[ツリー表示へ]
タイトルRe^7: CheckedListBox内での移動
記事No9345
投稿日: 2009/09/02(Wed) 17:53
投稿者bin
> > > 問題点:原案はListBoxだったからこれで良いが、bin さんの希望はCheckedListBox。
> > >     Checkedステータスの移動は追加しなければいけない。
>
> 下記でうまく動いたからご参考までに(苦労しないと勉強にならないか?)
>

 ダンボ 様
 以前にも一度ダンボ様にはお世話になったことがあります。
 今回は再度のご回答をいただきました。大助かりです。
でも私自身は勉強しないといけませんね。
 本当に有難うございました。

[ツリー表示へ]