NumericUpDownを作って試してみたのですが
おそらく数値しか表示できないのではないかと思います
(Valueなどに00を入力しても強制的に0になるため)
ですので、NumericUpDownを継承してクラスを作成しても同様に00の表示は
できないかと思います
ですので
自作のNumericUpdownもどきを作成してみるのはどうでしょうか?
つばささん
アドバイスありがとうございます。
自作のNumericUpdownもどきを作成することにしました。
テキストボックスの右側にNumericUpDownコントロールの矢印だけを表示して似たような
コントロールを作成しました。
プログラム的なことで質問なのですが
文字列(00,01,02)をカウントアップさせるには一時的にint型に変換してテキストボッ
クスに戻すときに再度、string型に変換させようと思います。ところがstring型からint
型へ上手く変換できません。Cとかだとatoiで行けると思いますがVC++.NET CLIでは融通
が利かずに困っています。何か上手い方法を教えてください
int->String^
int::ToString
もしくは
String::Format
String^->int
int::TryParse
(int::Parse)
または
Convert::ToInt32
Blueさん
String^ a = domainUpDown1->Text;
で変数aをint型に変換したいのですがString^->intは出来ないようです。
何か上手い方法はありますでしょうか?Cのようにatoiを使用したいのですが・・。
すみません。下記のようにして無事に出来ました!
String^ b = domainUpDown1->Text;
int i = System::Convert::ToInt32(b);
NumericUpDownコントロールに近いdomainUpDownを使用することにしました。これな
ら00表示いけそうです。
domainUpDownコントロールですが↑矢印と↓矢印を押下した際のイベントは切り分けて
取得できるのでしょうか?初めて使用するコントロールでヘルプ等を見ましたがよくわ
かりません
>String^->intは出来ないようです。
ちょっと間際らしかったですね。
->はアロー演算子ではなくて → という意味で書いたのです。
String^ s = 00;
int n = int::Parse(s); // 数字以外がありうるならばTryParseでチェックしたほう
// が ベター
Blueさん
アドバイスありがとうございます。下記のほうがベターということですね!
String^ s = 00;
int n = int::Parse(s);
すぐにレスが頂けて大変助かります。また非常に勉強になります。今後とも宜しくお願
いしますm(--)m
いろいろやってみたところ、継承してUpdateEditTextをオーバーライドすれば表示でき
るようです。
まずiijimaさんの
> 2007/03/27(火) 17:20:24
の方法でNumericUpDownクラスを継承したCustomNumericUpDownを作成します。
コードはこれだけ。
●CustomNumericUpDown.h
#pragma once
ref class CustomNumericUpDown :
public System::Windows::Forms::NumericUpDown
{
public:
CustomNumericUpDown(void);
protected:
virtual void UpdateEditText () override; // 追加!!
};
●CustomNumericUpDown.cpp
#include StdAfx.h
#include CustomNumericUpDown.h
CustomNumericUpDown::CustomNumericUpDown(void)
{
}
void CustomNumericUpDown::UpdateEditText()
{
this->Text = this->Value.ToString(L00);
}
ただし、これでビルドしても
>(5) ここで一旦ビルドすると、ツールボックスの[プロジェクト名]コンポーネントの
> ところにCustomNumericUpDownが追加される。
にはならなかったので、
(そもそもツールボックスに[プロジェクト名]ってのがない)
手動でForm1.hを編集します。
>Form1.hファイルの#pragma onceの次の行に
>#include CustomNumericUpDown.h
>private: System::Windows::Forms::NumericUpDown^ numericUpDown1;
>を
>private: CustomNumericUpDown^ numericUpDown1;
>に
>this->numericUpDown1 = (gcnew System::Windows::Forms::NumericUpDown());
>を
>this->numericUpDown1 = (gcnew CustomNumericUpDown());
として、ビルドすればいいです。
一応デザインモードは使えているようです。
ちなみに私の環境は
Windows XP Pro SP2/Visual Studio 2005 Pro SP1
です。
BLUEさんへ
おはようございます。上記の方法でばっちりいけました!!デザインも問題なく
開けています。
NumericUpDownで文字列が表示できるとは思っていなかったので大変参考になりました。
本当にありがとうございます。
> ただし、これでビルドしても
>>(5) ここで一旦ビルドすると、ツールボックスの[プロジェクト名]コンポーネントの
>> ところにCustomNumericUpDownが追加される。
> にはならなかったので、
例えば、プロジェクト名がTestだったとき、ツールボックスに「Testコンポーネン
ト」
というカテゴリがあって、その中に追加されませんか?
私の環境↓だと追加されます。
Windows Xp Pro. SP2
Visutl Srutio 2005 Pro.
Blueさんと環境同じですよね。
typo訂正
Visual Studio 2005 Pro.
iijimaさん
>>例えばプロジェクト名がTestだったとき、ツールボックスに「Testコンポーネン
>>ト」というカテゴリがあって、その中に追加されませんか?
プロジェクト名は表示されずにコンポーネントのみしか表示されませんでした。
私の環境も
Windows Xp Pro. SP2
Visual Srutio 2005 Pro
です。
あれー
私のだけ特別バージョン?(^^;
iijimaさん、BLUEさんのおかげで無事に解決することが出来ましたので本件は解決済み
とさせて頂きます。貴重なアドバイス等ありがとうございました。