次の方法で共有


UpDownBase クラス

アップダウン コントロールに必要な基本機能を実装します。

この型のすべてのメンバの一覧については、UpDownBase メンバ を参照してください。

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Windows.Forms.Control
            System.Windows.Forms.ScrollableControl
               System.Windows.Forms.ContainerControl
                  System.Windows.Forms.UpDownBase
                     System.Windows.Forms.DomainUpDown
                     System.Windows.Forms.NumericUpDown

MustInherit Public Class UpDownBase
   Inherits ContainerControl
[C#]
public abstract class UpDownBase : ContainerControl
[C++]
public __gc __abstract class UpDownBase : public ContainerControl
[JScript]
public abstract class UpDownBase extends ContainerControl

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

アップダウン コントロールは、テキスト ボックスと小さい垂直スクロール バーで構成され、一般的にはスピン コントロールと呼ばれます。 UpDownBase クラスは、2 つのコントロールにリンクしています。このクラスを使用すると、ユーザーは上向きの矢印ボタンまたは下向きの矢印ボタンをクリックしてテキスト ボックスの表示を変更したり、テキスト ボックスに適切な値を直接入力したりできます。アップダウン コントロールは、リスト ボックスやコンボ ボックスと同様に、ユーザーが選択できる値のリストを制限する場合に使用します。表示するリストの種類によっては、アップダウン コントロールを使用すると、項目を一度に 1 つずつ追加せずに、有効な値の範囲を簡単に設定できるという利点があります。 UpDownBase からクラスを派生するとデータ型を制限できるため、アップダウン コントロールの実装は、テキスト ボックスの実装よりもデータの検証数が少なくなります。たとえば、 NumericUpDown クラスでは、値を数値型に制限し、 Minimum プロパティと Maximum プロパティを使用して値を検証します。

ユーザーが方向キーを使用してアップダウン コントロールの内容を変更できるようにするには、 InterceptArrowKeys プロパティを true に設定します。指定した値に対してユーザーを制限するには、 ReadOnly プロパティを true に設定します。アップダウン コントロールのテキストの配置を制御するには、 TextAlign プロパティを設定します。コントロールのテキスト ボックス部分に関連する上向きの矢印ボタンと下向きの矢印ボタンの配置を設定するには、 UpDownAlign プロパティを LeftRightAlignment.Left または LeftRightAlignment.Right に設定します。

UpButton メソッドおよび DownButton メソッドは、オーバーライドされるときに、上向きの矢印ボタンと下向きの矢印ボタンのクリックを処理します。 ValidateEditText メソッドおよび UpdateEditText メソッドは、オーバーライドされるときに、選択または入力された値を検証し、アップダウン コントロールに表示されるテキストを更新します。この値の検証に失敗した場合は、 Select メソッドを使用して、無効なテキストを選択します。この場合、ユーザーは既存のテキストを手動で選択したり削除したりせずに、新しい値を入力するだけでテキストを簡単に修正できます。

継承時の注意: UpDownBase から継承する場合は、 DownButtonUpButtonUpdateEditTextValidateEditText の各メンバをオーバーライドする必要があります。

使用例

[Visual Basic, C#, C++] 派生クラス NumericUpDown を使用して、 UpDownBase から派生したこのクラスのプロパティの一部を設定する例を次に示します。このコードは、 NumericUpDown コントロール、2 つの ComboBox コントロール、および 3 つの CheckBox コントロールがフォーム上で作成されていることを前提にしています。 ComboBox コントロールにそれぞれ、BorderStyle および TextAlign とラベルを付けます。 CheckBox コントロールにそれぞれ、InterceptArrowKeys、ReadOnly、UpDownAlign - Left とラベルを付けます。このコードを使用すると、実行時にプロパティ値を変更したり、それぞれの変更がアップダウン コントロールの外観と動作にどのように影響するかを確認したりできます。BorderStyle というラベルが付いているコンボ ボックスに None、Fixed3D、FixedSingle の各項目を追加します。TextAlign というラベルが付いているコンボ ボックスに Left、Right、Center の各項目を追加します。

 
Private Sub comboBox1_SelectedIndexChanged(sender As Object, e As EventArgs)
    ' Set the BorderStyle property.
    Select Case comboBox1.Text
        Case "Fixed3D"
            numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
        Case "None"
            numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.None
        Case "FixedSingle"
            numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
    End Select
End Sub    

Private Sub comboBox2_SelectedIndexChanged(sender As Object, e As EventArgs)
    ' Set the TextAlign property.    
    Select Case comboBox2.Text
        Case "Right"
            numericUpDown1.TextAlign = HorizontalAlignment.Right
        Case "Left"
            numericUpDown1.TextAlign = HorizontalAlignment.Left
        Case "Center"
            numericUpDown1.TextAlign = HorizontalAlignment.Center
    End Select
End Sub    

Private Sub checkBox1_Click(sender As Object, e As EventArgs)
    ' Evaluate and toggle the ReadOnly property.
    If numericUpDown1.ReadOnly Then
        numericUpDown1.ReadOnly = False
    Else
        numericUpDown1.ReadOnly = True
    End If
End Sub    

Private Sub checkBox2_Click(sender As Object, e As EventArgs)
    ' Evaluate and toggle the InterceptArrowKeys property.
    If numericUpDown1.InterceptArrowKeys Then
        numericUpDown1.InterceptArrowKeys = False
    Else
        numericUpDown1.InterceptArrowKeys = True
    End If
End Sub    

Private Sub checkBox3_Click(sender As Object, e As EventArgs)
    ' Evaluate and toggle the UpDownAlign property.
    If numericUpDown1.UpDownAlign = LeftRightAlignment.Left Then
        numericUpDown1.UpDownAlign = LeftRightAlignment.Right
    Else
        numericUpDown1.UpDownAlign = LeftRightAlignment.Left
    End If
End Sub


[C#] 
private void comboBox1_SelectedIndexChanged(Object sender, 
                                             EventArgs e)
 {
      // Set the BorderStyle property.
     switch(comboBox1.Text)
     {
         case "Fixed3D":
             numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
             break;
         case "None":
             numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.None;
             break;
         case "FixedSingle":
             numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
             break;
     }
 }
 
 private void comboBox2_SelectedIndexChanged(Object sender, 
                                             EventArgs e)
 {
      // Set the TextAlign property.    
     switch (comboBox2.Text)
     {
         case "Right":
             numericUpDown1.TextAlign = HorizontalAlignment.Right;
             break;
         case "Left":
             numericUpDown1.TextAlign = HorizontalAlignment.Left;
             break;
         case "Center":
             numericUpDown1.TextAlign = HorizontalAlignment.Center;
             break;
     }
 }
 
 private void checkBox1_Click(Object sender, 
                              EventArgs e)
 {
      // Evaluate and toggle the ReadOnly property.
     if (numericUpDown1.ReadOnly)
     {
         numericUpDown1.ReadOnly = false;
     }
     else
     {
         numericUpDown1.ReadOnly = true;
     }
 }
 
 private void checkBox2_Click(Object sender, 
                              EventArgs e)
 {
      // Evaluate and toggle the InterceptArrowKeys property.
     if (numericUpDown1.InterceptArrowKeys)
     {  
         numericUpDown1.InterceptArrowKeys = false;
     }
     else
     {
         numericUpDown1.InterceptArrowKeys = true;
     }
 }
 
 private void checkBox3_Click(Object sender, 
                              EventArgs e)
 {
      // Evaluate and toggle the UpDownAlign property.
     if (numericUpDown1.UpDownAlign == LeftRightAlignment.Left)
     {
         numericUpDown1.UpDownAlign = LeftRightAlignment.Right;
     }
     else
     {
         numericUpDown1.UpDownAlign = LeftRightAlignment.Left;
     }
 }
 

[C++] 
private:
    void comboBox1_SelectedIndexChanged(Object *sender, EventArgs *e) {
        // Set the BorderStyle property.

        if (!String::Compare(comboBox1->Text, S"Fixed3D")) {
            numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::Fixed3D;
        } else if (!String::Compare(comboBox1->Text, S"None")) {
            numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::None;
        } else if (!String::Compare(comboBox1->Text, S"FixedSingle")) {
            numericUpDown1->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;
        }
    };

    void comboBox2_SelectedIndexChanged(Object *sender, EventArgs *e) {
        // Set the TextAlign property.    
        
        if (!String::Compare(comboBox2->Text, S"Right")) {
            numericUpDown1->TextAlign = HorizontalAlignment::Right;
        } else if (!String::Compare(comboBox1->Text, S"Left")) {
            numericUpDown1->TextAlign = HorizontalAlignment::Left;
        } else if (!String::Compare(comboBox1->Text, S"Center")) {
            numericUpDown1->TextAlign = HorizontalAlignment::Center;
        }
    };

    void checkBox1_Click(Object *sender, EventArgs *e) {
        // Evaluate and toggle the ReadOnly property.
        if (numericUpDown1->ReadOnly) {
            numericUpDown1->ReadOnly = false;
        } else {
            numericUpDown1->ReadOnly = true;
        }
    };

    void checkBox2_Click(Object *sender, EventArgs *e) {
        // Evaluate and toggle the InterceptArrowKeys property.
        if (numericUpDown1->InterceptArrowKeys)    {  
            numericUpDown1->InterceptArrowKeys = false;
        } else {
            numericUpDown1->InterceptArrowKeys = true;
        }
    };

    void checkBox3_Click(Object *sender, EventArgs *e) {
        // Evaluate and toggle the UpDownAlign property.
        if (numericUpDown1->UpDownAlign == LeftRightAlignment::Left) {
            numericUpDown1->UpDownAlign = LeftRightAlignment::Right;
        } else {
            numericUpDown1->UpDownAlign = LeftRightAlignment::Left;
        }
    };

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)

参照

UpDownBase メンバ | System.Windows.Forms 名前空間 | NumericUpDown | DomainUpDown