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

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

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

No.90110 の関連記事表示

<< 0 >>
■90110  DateTimePickerでホイールを使う方法
□投稿者/ やーまー -(2019/02/09(Sat) 14:03:15)

    分類:[.NET 全般] 


    DateTimePickerでホイールを回すことで数値を変えられるようにしたいのですが

    Private Sub DateTimePicker1_MouseWheel(sender As Object, e As MouseEventArgs) Handles DateTimePicker1.MouseWheel

    If e.Delta > 0 Then

    System.Windows.Forms.SendKeys.Send("{UP}")

    Else

    System.Windows.Forms.SendKeys.Send("{DOWN}")

    End If

    End Sub

    このコードでできるようになりました。

    しかし、この方法だと
    ゼロから更にホイールを下に回すと
    23や59といった値になってしまいます。

    これをゼロよりも下に回しても下がらず
    23や59よりも上に回してもそれ以上上がらないようにしたいのですが
    どのようにしたら良いですか?



親記事 /過去ログ155より / 関連記事表示
削除チェック/

■90118  Re[1]: DateTimePickerでホイールを使う方法
□投稿者/ WebSurfer -(2019/02/09(Sat) 23:38:54)
    No90110 (やーまー さん) に返信

    何を作っているか(Windows Forms? ASP.NET Web アプリ? その他?)と開発環境(OS, .NET,
    Visual Studio のバージョンなど)を書いてください。

    もし、DateTimePicker というのが .NET のライブラリに含まれるものでなく、サードパーティ製
    とかであれば、何なのかも詳しく書いてください。
記事No.90110 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90119  Re[1]: DateTimePickerでホイールを使う方法
□投稿者/ Azulean -(2019/02/10(Sun) 08:03:16)
    すでに動いているということと、「 System.Windows.Forms.SendKeys.Send」があるということなので、Windows Forms だと仮定しておきます。

    No90110 (やーまー さん) に返信
    > DateTimePickerでホイールを回すことで数値を変えられるようにしたいのですが
    (略)
    > これをゼロよりも下に回しても下がらず
    > 23や59よりも上に回してもそれ以上上がらないようにしたいのですが
    > どのようにしたら良いですか?

    現状は、DateTimePicker コントロールの自身の上下キー操作の仕様に依存(委譲)したものになっています。
    こういったケースで考えられる案としては以下のものがあります。

     1. 上下キーの動き自体を制御したい場合は DateTimePicker のコントロールを継承するか、メッセージのフックが必要になります。
     2. ホイール時のみ、その数値またぎを排除したいのなら、Value プロパティを見て、SendKey を呼ぶ・呼ばないを分ければ良いことになります。

    ただし、実際には DateTimePicker コントロールが Windows のコモンコントロール(SysDateTimePick32)を .NET で使えるようにラップしたものであるため、細かな動きの制御は困難です。
    また、OS によって DateTimePicker の動きも結構変わる事情もあります。
    このため、細かなカスタマイズを目指すのは大変だと思います。
    (カスタマイズを頑張るなら、全部自作するぐらいの勢いが必要かもしれない)


    現状をベースに実現する方向で考えた場合、厳しいのはどの位置(時分秒など)が選択されているかを知る方法です。
    ざっと以下のページも読み直してみましたが、公開されていなさそうでした。
    https://docs.microsoft.com/en-us/windows/desktop/controls/date-and-time-picker-control-reference

    これがわかるのなら、現在値とホイールの方向から無視 or キー入力と制御できるとは思いますが…。
記事No.90110 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90125  Re[2]: DateTimePickerでホイールを使う方法
□投稿者/ やーまー -(2019/02/11(Mon) 12:22:24)
    ありがとうございます。
    
    これはできないのですね。
    
    あと、数値を中央揃えしたいとも考えています。
    
    https://stackoverflow.com/questions/46675204/is-it-possible-to-center-the-text-of-datetimepicker
    
    ここにC#のコードが掲載されていて、
    これを以下のようにVBにかきかえてみました。
    
    Public Class CenteredDateTimePicker
        Inherits DateTimePicker
    
        Public Sub New()
            MyBase.New
            SetStyle(ControlStyles.UserPaint, True)
        End Sub
    
        Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
            e.Graphics.DrawString(Text, Font, New SolidBrush(ForeColor), ClientRectangle, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
        End Sub
    End Class
    
    しかし、ツールボックスからフォームにD&Dして読み込ませようとしても
    エラーが発生しました
    と表示されてツールボックスから消滅してしまいます。
    
    一体どのようにすれば良いですか?
    
    
記事No.90110 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90126  Re[3]: DateTimePickerでホイールを使う方法
□投稿者/ やーまー -(2019/02/11(Mon) 12:52:49)
    単に一度ビルドしていないのが原因でした

    表示はできたのですが
    黒枠が表示されない上に
    数値を選択しても青色にならず
    数値が動かないのですが
    これは一体どうすれば良いですか?
記事No.90110 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90127  Re[4]: DateTimePickerでホイールを使う方法
□投稿者/ Azulean -(2019/02/11(Mon) 18:12:59)
    前にも書きましたが、DateTimePicker は単純な構造ではありません。
    ちょっと書き換えるだけで動作を変えられるものではないので、お望みの動作をしようとすると、かなりの部分を自作することになります。
    (選択したときに色を変える動作も自分で作る必要がありますし、どの部分が選択されているかを自分で知る必要があるが、それは簡単にできそうにない)
記事No.90110 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90128  Re[5]: DateTimePickerでホイールを使う方法
□投稿者/ やーまー -(2019/02/11(Mon) 19:48:07)
    OnPaintで基本的な部分はDateTimePickerを継承しつつ
    センタリングの部分だけ書き換えることってできないのでしょうか?
記事No.90110 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90129  Re[6]: DateTimePickerでホイールを使う方法
□投稿者/ Azulean -(2019/02/11(Mon) 21:06:41)
    No90128 (やーまー さん) に返信
    > OnPaintで基本的な部分はDateTimePickerを継承しつつ
    > センタリングの部分だけ書き換えることってできないのでしょうか?

    繰り返しになりますが、DateTimePicker コントロールは Win32 のコモンコントロールを使っているだけなので、OnPaint を横取りしても細かな制御はできません。
    DateTimePicker の場合はすべて自分で描くか、任せるかの2択になりそうです。
記事No.90110 のレス /過去ログ155より / 関連記事表示
削除チェック/

■90130  Re[7]: DateTimePickerでホイールを使う方法
□投稿者/ やーまー -(2019/02/11(Mon) 21:23:22)
    そうでしたか

    どうもありがとうございました。
記事No.90110 のレス / END /過去ログ155より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -