忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2024/11/23 09:23 |
カスタムコントロール .NET
たまにはデジタル丁稚の本領発揮な記事もあげとくよー。
一度はやってみたかった、オープンソースだよー。
万人の役に立つわけじゃないけど、ごく限られた人には、作業軽減になるかもねーならないかもねー。

------------------------------------------------------------------------------------
◇PermTextBox-入力可能文字指定可能テキストボックス
特徴
 許可された文字以外入力できないテキストボックス。それだけ。
 入力できない文字は、コピペでも入力不可。
追加プロパティ
  public char[] PermitChars { get; set; }
 入力可能な文字を設定/取得
使い方
 貼るだけ。

keypressで入力値を取捨選択すれば、普通のテキストボックスでも可能なんですが、
プロパティで設定できたらいいことあるかなと、専用のコントロールを作成。

ダウンロードはこちら
http://nagisa.okoshi-yasu.net/open%20source/PermTextBox.zip

------------------------------------------------------------------------------------
◇SerialPortList-シリアルポート一覧表示コンボボックス
特徴
・PCに存在するシリアルポートを自動で取得し、一覧として表示するコンボボックス。それだけ。
・サイズの自動調整に対応しており、リストのフォント変更、コントロールのサイズ変更に応じて、自動的に最適なサイズに変更される。
追加プロパティ
  public Font ListBoxFont { get; set; }
  リストボックスのフォント設定/取得
  設定時、サイズに応じてコントロールのサイズが変化します。

  public string ListBoxText { get; set; }
  リストボックスのテキスト設定/取得
  選択されているポート名を取得する時に使用します。
使い方
 貼るだけ。

リスト化されていたら便利かなと、専用のコントロールを作成。
自分で作っておきながらアレだけど、日の目を見た記憶が無い。

ダウンロードはこちら
http://nagisa.okoshi-yasu.net/open%20source/SerialPortList.zip

------------------------------------------------------------------------------------
◇Clock-時計
特徴
・現在の日時をラベルに表示する。1秒ごとに変化。それだけ。
・datetimeの書式指定文字列に対応しており、日時のフォーマットをプロパティで指定可能。

追加プロパティ
 public Font ClockFont { get; set; }
 時計表示のフォント設定/取得
  public string ClockFormat { get; set; }
  表示形式の設定/取得 デフォルトは"F"(yyyy年MM月dd日 hh:mm:ss)
使い方
 貼るだけ。

UIに時計を表示する事は多いけど、それのためにタイマーとラベルをいちいち用意するのが面倒で
一体化したものを作ってみました。

ダウンロードはこちら
http://nagisa.okoshi-yasu.net/open%20source/Clock.zip

------------------------------------------------------------------------------------
◇IPAddressControl-IPアドレス入力専用テキストボックス
特徴
・IP Address(IPV4)の入力に特化した、テキストボックス
 地味にめんどくさい入力値のチェック(255以下であるか等)も、自動で行う
・1要素ずつにプロパティが設定されているので、好きな要素の設定/取得が可能
・サイズの自動調整に対応
 各要素テキストボックスの、間隔などの指定が可能

追加プロパティ
 public int Value1 { get; set; }
 public int Value2 { get; set; }
 public int Value3 { get; set; }
 public int Value4 { get; set; }
 各要素の設定/取得
 範囲外の値の入力がされた場合は、例外FormatExceptionが返ります

 public int TextBoxSpace { get; set; }
 各要素の間隔の設定/取得
 設定後、コントロール全体のサイズ調整を行います。

 public Font TextBoxFont { get; set; }
 各要素のフォントの設定/取得
 設定後、コントロール全体のサイズ調整を行います。
使い方
 貼るだけ。

昔はあった(古き良きMFCの時代)のに、いつの間にか無くなったIP Addressコントロール。
毎回テキストを組み合わせて自作するのは面倒なので、一体型のコントロールとして作りました。
 
ダウンロードはこちら
http://nagisa.okoshi-yasu.net/open%20source/IPAddressControl.zip

------------------------------------------------------------------------------------
◇TenKey-10キー
特徴
・登録したラベルに対し、10キーから入力が可能
 各ラベルには、入力最大長、デフォルト値、数値チェックの有無が個別に設定可能
・上下ボタンにより、前後のラベルにフォーカスを移動させることが可能
 また、上下ボタンの有無は自動、手動が選択可能。
・コールバック関数の登録により、入力値などのコードを受けることが可能

追加プロパティ
 public eUpDownSetting UpDownSetting { get; set; }
 上下ボタン表示方法を設定/取得
 自動:登録したラベルが複数であれば表示。1個以下であれば非表示
 手動:UpDownButtonVisbleに従う

 public bool UpDownButtonVisble { get; set; }
 上下ボタンの表示/非表示を設定/取得
 UpDownSettingが自動の場合には無効

 public Color TextFocusColor { get; set; }
 選択状態であるオブジェクト(ラベル)の背景色を示します

 public int TextBoxSpace { get; set; }
 ボタン間隔の設定/取得
 設定後、コントロール全体のサイズ調整を行います。

 public Font ButtonFont
 ボタンフォントの設定/取得

使い方例
◇ラベルの登録
label1、label2、label3を登録。
それぞれの設定は
label1 入力長制限なし,デフォルトは"",数値チェックなし
label2 入力は2桁まで,デフォルトは"",数値チェックあり
label3 入力は5桁まで、デフォルトは"0",数値チェックあり
 デフォルト:未入力でフォーカスを外した場合等に使用します。
 数値チェック:trueの場合は入力値がゼロサプレスされます ex."01"->"1"

TenKey.TenKey.InitSetting[] wk = { new TenKey.TenKey.InitSetting(label1, 0, "", false),
                                   new TenKey.TenKey.InitSetting(label2, 2, "", true),
                                   new TenKey.TenKey.InitSetting(label3, 5, "0", true),
                                 };
tenKey1.SetInitSetting(wk);
◇コールバックの登録
登録例
        private void Form1_Load(object sender, EventArgs e)
        {
            //登録
            tenKey1.SetCallBack(new TenKey.TenKey.CallBack(EventTimingCallBack));
        }

        //コールバック関数
        private void EventTimingCallBack(TenKey.TenKey.ResEvent code)
        {
            //0ボタンが押された?
            if (code == TenKey.TenKey.ResEvent.NUM0_BTN)
            {
            }
        }

UI制御にタッチパネルを採用している製品は、たとえメンテナンスといえども、
キーボードの使用が許されない事が多い。
大体決まったフォーマットの10キーが毎回必要になるので、一体型の10キーコントロールを作成。
また、タッチパネルで押下するためには、マウスよりもボタンを大きくする必要があるが、
一つ一つのボタンを個別に設定なんて、やってられんので、一括で自動的にサイズを変化させるよう対応

ダウンロードはこちら
http://nagisa.okoshi-yasu.net/open%20source/TenKey.zip

------------------------------------------------------------------------------------
◇SizableNumericUpDown ボタンサイズの変更が可能な数値ボックス(自作numericUpDown)
タッチパネルで操作することを想定した、SizableNumericUpDownオブジェクト風カスタムコントロール。
特徴
・数値の選択にはnumericUpDownが便利だけど、上下のボタンサイズが極小。
 これをタッチパネルで操作しようなんてのは、相当心が広い人でないと不可能。
 そこで、2つのボタンとテキストボックスを合体し、自作numericUpDownを作成し、
 各コントロールの配置やサイズを、自由に変更できるようにした。

プロパティ
 public Size UpButtonSize
 ▲ボタンのサイズ設定/取得

 public Point UpButtonLocation
 ▲ボタンの位置設定/取得

 public Font UpButtonFont
 ▲ボタンのフォント設定/取得

 public Size DownButtonSize
 ▼ボタンのサイズ設定/取得

 public Point DownButtonLocation
 ▼ボタンの位置設定/取得

 public Font DownButtonFont
 ▼ボタンのフォント設定/取得

 public int TextBoxXSize
 テキストボックスの横幅設定/取得

 public Point TextBoxLocation
 テキストボックスの位置設定/取得

 public Font TextBoxFont
 テキストボックスのフォント設定/取得

 public int Maximum
 数値の最大値設定/取得
 異常な設定の場合はFormatException()を返します。

 public int Minimum
 数値の最小値設定/取得
 異常な設定の場合はFormatException()を返します。

 public int Value
 現在値の設定/取得
 異常な設定の場合はFormatException()を返します。

 public int RepeatFirstInterval
 初回リピート開始時間(ボタン押下からリピート開始までの待ち時間)設定/取得(単位:ms)

 public int RepeatInterval
 リピート間隔時間(初回以降のリピート実行時間)設定/取得(単位:ms)

 public uint Increment
 ▲▼押下時の、値の増減量設定/取得
 
ダウンロードはこちら
http://nagisa.okoshi-yasu.net/open%20source/SizableNumericUpDown.zip

まぁぶっちゃけ、5分もあれば作れるものばかりかもしれませんが、カスタムコントロールの作り方が分かるかもしれないし、そうやって学んだ若き英雄が、さらに便利なものを作ってくれるかもしれないしね。

浅学の老兵による、技術提供でした。

拍手


2013/02/16 00:28 | Comments(0) | デジタル関係

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<困った上司 | HOME | 壮大な物語なのに>>
忍者ブログ[PR]