C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■43173  Re[9]: SPREADfor .NET3.0J 移行後の異常について
□投稿者/ capricious -(2009/10/30(Fri) 15:57:35)
    オショウさん
    みきぬさん
    自作さん

    アドバイスありがとうございます。

    先ほど、サポートに問い合わせを出してみました。

    とりあえず、限界まで自分でも調べますので、
    何か情報等ありましたら、またご指摘くださいますよう、よろしくお願いいたします。
記事No.43127 のレス /過去ログ74より / 関連記事表示
削除チェック/

■56927  Re[1]: Bindingってどうやって実現してのか?
□投稿者/ 魔界の仮面弁士 -(2011/02/05(Sat) 15:04:13)
    No56925 (デザパタ さん) に返信
    > この変更検知をどうやって実現しているのかが気になります。
    単純バインディングの場合と、リストベースの物とで若干の違いはありますが、
    「イベントを利用する」というのが、その通知方法の一つです。

    Text プロパティに対して TextChanged イベントがあるように、バインド可能なプロパティには
    対応する *Changed イベントが存在しますので、これが変更検知として利用されています。

    そのほか、下記が参考になるでしょう。WPF や ASP.NET の場合はまた別の技術になりますが。

    [Windows フォーム データ バインディングの変更通知]
    http://msdn.microsoft.com/ja-jp/library/xz45s2bh%28VS.80%29.aspx


    > C言語で同様のことを実装する場合、バインディング時に
    ちなみに COM の世界だと、こんな形でのバインディング技法があります。
    http://msdn.microsoft.com/en-us/library/ms531373%28VS.85%29.aspx

    # VB6 だと、DataBindingBehavior = vbSimpleBound / vbComplexBound とか、
    # CanPropertyChange / PropertyChanged メソッドという話になってみたり。
    # http://support.microsoft.com/kb/161273/ja


    > C#ではint型も値型のクラスなので代入時に何かフレームワークレベルでイベントが発行されているのでしょうか?
    コレクション等を経由させずに、int 型そのものをデータバインドさせるという事ですか?

    質問の意味が理解しきれていないのですが、これは、どのような状況を指しているのでしょうか。
    int型の場合、変数の中身を(再代入せずに)変更することはできないので、
    変更通知は起こらないように思えるのですが…。


    int 型のバインドということで、とりあえず、
     textBox1.DataBindings.Add("Text", intValue, null);
    のような事を想像したのですが、この場合、DataSourceUpdateMode に何を指定しようとも、
    バインドしなおさない限りは変更結果が反映されませんでした。
記事No.56925 のレス /過去ログ95より / 関連記事表示
削除チェック/

■57458  Re[8]: マウスカーソルがタイトルバー上かを検知
□投稿者/ ken -(2011/02/28(Mon) 11:02:17)
    2011/02/28(Mon) 11:06:48 編集(投稿者)

    すみません、前後して気がつきました。所望動作できるようになりました。ありがとうございました。
    ところで、
    Bounds.Contains(Cursor->Position) ? 1.0 : 0.5;
    の記述を初めて見たのですが、?より前が条件式、その後のコロンで区切られた2つの数値が、条件式がtrueおよびfalseの戻り値でよいのですよね。
記事No.57305 のレス / END /過去ログ96より / 関連記事表示
削除チェック/

■76838  Re[1]: ずれ
□投稿者/ 774RR -(2015/08/24(Mon) 12:56:25)
    うん、なにかバグってるんだろうね。
    ・プログラムは「希望したとおり」でなく「書かれているとおり」に動く

    その質問からだと、これ以上のアドバイスは出ないと思われるっす。
    もうちょっと質問を工夫してみよう。
記事No.76835 のレス /過去ログ130より / 関連記事表示
削除チェック/

■88585  Re[2]: フォルダ名とその更新日時を一緒に収得
□投稿者/ なつ -(2018/09/09(Sun) 08:19:16)
    2018/09/09(Sun) 08:21:05 編集(投稿者)

    No88582 (Hongliang さん) に返信

    ありがとうございます。

    DirectoryInfoを使うのも分かるのですが、知りたいのはあるフォルダ内に存在する、全てのフォルダ名とその更新日時で、
    しかも可能であれば "*.files" などとして "files" が付くフォルダのみを収得したいのです。
記事No.88574 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88586  Re[3]: フォルダ名とその更新日時を一緒に収得
□投稿者/ Jitta -(2018/09/09(Sun) 08:45:44)
記事No.88574 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88600  Re[6]: フォルダ名とその更新日時を一緒に収得
□投稿者/ 魔界の仮面弁士 -(2018/09/10(Mon) 10:19:47)
    No88598 (魔界の仮面弁士) に追記
    > System.IO.Directory クラスだと、列挙されるのはあくまでパス名だけですので、
    > これを System.IO.DirectoryInfo クラスに置き換えることで、さらに効率が良くなります。


    おぉっと…? No88585 の時点で、DirectoryInfo を使うことは検討済みだったのですね。
    >> DirectoryInfoを使うのも分かるのですが

    でも何故か、 No88597 の時点では DirectoryInfo を用いていないようですが、
    DirectoryInfo でも AllDirectories 指定はできるようになっているはずですよ。


    ただし、ターゲット フレームワークを .NET Framework 2.0/3.0/3.5 にしている場合は、
    IEnumerable(Of ) を返す Enumerate〜系メソッドが使えず、
    配列を返す Get〜系メソッドに頼ることになります。
     

    .NET 1.0 以上
      Directory.GetDirectories(String) 静的メソッド
      Directory.GetDirectories(String, SearchOption) 静的メソッド
      DirectoryInfo.GetDirectories() インスタンス メソッド
      DirectoryInfo.GetDirectories(String) インスタンス メソッド


    .NET 2.0 以上
      Directory.GetDirectories(String, String, SearchOption) 静的メソッド
      DirectoryInfo.GetDirectories(String, SearchOption) インスタンス メソッド


    .NET 4.0 以上
      Directory.EnumerateDirectories(String) 静的メソッド
      Directory.EnumerateDirectories(String, String) 静的メソッド
      Directory.EnumerateDirectories(String, String, SearchOption) 静的メソッド
      DirectoryInfo.EnumerateDirectories(String) インスタンス メソッド
      DirectoryInfo.EnumerateDirectories(String, SearchOption) インスタンス メソッド
記事No.88574 のレス /過去ログ152より / 関連記事表示
削除チェック/

■88613  Re[8]: フォルダ名とその更新日時を一緒に収得
□投稿者/ 魔界の仮面弁士 -(2018/09/10(Mon) 23:42:40)
    No88608 (なつ さん) に返信
    > 既に頭の中は混乱状態、思ってたよりは随分とややっこしいのですね。

    No88585 の時点で、DirectoryInfo にどういうメンバーが含まれているかは調査済みで、
    それでも調査しきれなかったという点についても、追加質問に対して、短いコード例を
    つけて回答したので、それで分かってもらえるものと思い込んでいました。反省。


    DirectoryInfo にどんなメンバーがあるかは、DataGridView に渡すことで一覧できます。
    DirectoryInfo のプロパティに、日付情報も同時に記録されていることが一望できるかと。

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      Dim sDir As String = "C:\Users\○○○\○○○\SONY NNC\SNNC30"
      DataGridView1.DataSource = New DirectoryInfo(sDir).GetDirectories("*", SearchOption.AllDirectories)
    End Sub


    上記では、コントロールに表示するために GetDirectories を使いましたが、
    No88598 でも述べたように、 EnumerateDirectories を使って LINQ や For Each での
    順次列挙を行うこともできます。


    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
     Dim sDir As String = "C:\Users\○○○\○○○\SONY NNC\SNNC30"
     For Each di In New DirectoryInfo("C:\TEST").EnumerateDirectories("*", SearchOption.AllDirectories)
       Debug.WriteLine($"作成={di.CreationTime}, 更新={di.LastWriteTime}, パス={di.FullName}")
     Next
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
     Dim sDir As String = "C:\Users\○○○\○○○\SONY NNC\SNNC30"
     For Each di In New DirectoryInfo("C:\TEST").GetDirectories("*", SearchOption.AllDirectories)
       Debug.WriteLine($"作成={di.CreationTime}, 更新={di.LastWriteTime}, パス={di.FullName}")
     Next
    End Sub

    Button2 は EnumerateDirectories による列挙、
    Button3 は GetDirectories による列挙にしてあります。

    いずれも Debug.WriteLine により、「イミディエイト」ウィンドウもしくは「出力」ウィンドウに
    作成日時、更新日時、ディレクトリ名を列挙するだけの処理です。


    sDir に、フォルダ数が多いパスを与えてみてください。
    EnumerateDirectories ではすぐに列挙が始まるのに、
    GetDirectories では列挙開始まで時間がかかってしまいます。


    また、sDir に "C:\Windows" などを与えると、アクセス権の問題から
    例外で停止してしまうことになります。これが No88598 で述べていた注意点です。
    >> UnauthorizedAccessException 例外等により、処理が中断されてしまうことになります。



    > Dim x As IEnumerable(Of String) = System.IO.Directory.EnumerateDirectories("C:\Users\○○○\○○○\SONY NNC\SNNC30", "*", System.IO.SearchOption.AllDirectories)
    > ただ疑問なのは、x は 同じString でありながらも、
    同じ…では無いですよね?
    x の型は「String」でも「String()」でもなく、「IEnumerable(Of String)」なのですから。



    > 何故か ListBox1.Items.AddRange(x) とは出来ないのかです。
    AddRange メソッドの引数に渡せる型は「Object()」だからですね。
    (Hongliang さんの回答にあるとおり、もう一つのオーバーロードもありますが)

    でもって、IEnumerable(Of String) は一次元配列ではありませんから、
    Object() に変換することができません。ゆえに、AddRange には渡せないということです。


    配列化するために『ListBox1.Items.AddRange(x.ToArray())』のように呼べば渡せますが、
    それなら最初から、EnumerateDirectories ではなく GetDirectories を使えば済みますね。


    ただし LINQ で再加工するような処理においては、EnumerateDirectories の方が良いでしょう。


    Dim q = From di In New DirectoryInfo(sDir).EnumerateDirectories("*", SearchOption.AllDirectories)
        Select $"作成={di.CreationTime}, 更新={di.LastWriteTime}, パス={di.FullName}"

    ListBox1.Items.AddRange(q.ToArray())



    > NET Framework は4.0のようです。
    NET ではなく .NET (ドットネット) ですね。

    Jitta さんの回答に補足して、.NET Framework のライフサイクルの表を載せておきます。
    (.NET Framework 4 / 4.5 / 4.5.1 のサポートは、2016 年 1 月 12 日で終了しています)


    4.7.2 → 2018/02/05 ライフサイクル開始、サポート中(OS のサポート期限まで)★現在の最新版★
    4.7.1 → 2017/10/17 ライフサイクル開始、サポート中(OS のサポート期限まで)
    4.7  → 2017/04/05 ライフサイクル開始、サポート中(OS のサポート期限まで)
    4.6.2 → 2016/08/02 ライフサイクル開始、サポート中(OS のサポート期限まで)
    4.6.1 → 2015/11/30 ライフサイクル開始、サポート中(OS のサポート期限まで)
    4.6  → 2015/07/20 ライフサイクル開始、サポート中(OS のサポート期限まで)
    4.5.2 → 2014/05/05 ライフサイクル開始、サポート中(OS のサポート期限まで)
    4.5.1 → 2013/09/07 ライフサイクル開始、2016/01/12 で既にサポート切れ
    4.5  → 2012/08/05 ライフサイクル開始、2016/01/12 で既にサポート切れ
    4.0  → 2010/03/31 ライフサイクル開始、2012/03/04 Update 3(4.0.3)、2016/01/12 で既にサポート切れ
    3.5  → 2007/11/19 ライフサイクル開始、2008/11/18 Service Pack 1(3.5.1)、サポート中(OS のサポート期限まで)
    3.0  → 2006/11/19 ライフサイクル開始、2008/08/12 Service Pack 2、2011/07/12 で既にサポート切れ
    2.0  → 2005/11/07 ライフサイクル開始、2009/01/16 Service Pack 2、2011/07/12 で既にサポート切れ
    1.1  → 2003/04/01 ライフサイクル開始、2004/09/09 Service Pack 1、2013/10/08 で既にサポート切れ
    1.0  → 2002/01/05 ライフサイクル開始、2004/09/09 Service Pack 3、2009/07/14 で既にサポート切れ

    ※ライフサイクルの開始日は、リリース日とは異なります。


    4.7.2 を同梱している OS → Windows 10 ver1803
    4.7.1 を同梱している OS → Windows 10 ver1709
    4.7  を同梱している OS → Windows 10 ver1703
    4.6.2 を同梱している OS → Windows 10 ver1607
    4.6.1 を同梱している OS → Windows 10 ver1511
    4.6  を同梱している OS → Windows 10 ver1507
    4.5.2 を同梱している OS → なし
    4.5.1 を同梱している OS → Windows 8.1
    4.5  を同梱している OS → Windows 8
    4.0  を同梱している OS → なし
    3.5.x を同梱している OS → Vista 〜 Windows 10
    3.0  を同梱している OS → Vista 〜 Windows 10
    2.0  を同梱している OS → Vista 〜 Windows 10
    1.1  を同梱している OS → なし
    1.0  を同梱している OS → なし
記事No.88574 のレス /過去ログ152より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -