今なら家電が全品9%OFF!

VB2008で定数に色の設定をしたいです。(初心者)

VB2008初心者です。
定数に色の設定をしたいのですがなかなか上手く設定出来ません。

変数に設定は出来るのですが、
Dim COLOR As System.Drawing.Color = COLOR.Red

定数にした場合エラーになります。
Public Const COLOR As System.Drawing.Color = COLOR.AliceBlue


色々他も試してみたのですが・・初歩的な質問で申し訳ありません。

設定は「System.Drawing.Color」でなくても良いのですが、
どなかたかご教授頂きたく宜しくお願い致します。

A 回答 (3件)

私の環境では


「定数は、class、structure、または array 型ではなく、組み込み型または列挙型でなければなりません。」
とエラーが出ます。

Colorの定義は
Public Structure Color
です。

AliceBlueはColor構造体に
Public Shared ReadOnly Property AliceBlue() As System.Drawing.Color
として定義されています。


エラー内容の通り、「元のAliceBlueが定数でない」ので、「定数宣言には利用できません」ということです。


定数とは異なりますが、AliceBlueのように読み取り専用プロパティとして利用すると、定数宣言と似たような事を行えます。
Public ReadOnly Property COLOR() As System.Drawing.Color
  Get
    Return COLOR.AliceBlue
  End Get
End Property

この回答への補足

1050YEN様

ご連絡有難うございます。

私の環境でもエラーの内容は
「定数は、class、structure、または array 型ではなく、組み込み型または列挙型でなければなりません。」
でした。

クラスのプロパティを使用する方法も良いですね!

現在、グローバルな変数や定数をモジュールファイルにまとめて記載していますので
出来れば定数に設定したのですが、もう少し粘ってみて無理そうでしたらプロパティでの設定してみようと思います。

VB6の時は出来たので多分出来ないことは無いと思うのですが・・・
.netの利用が始めてなので??な事ばかりです。。

p.s
変数名のご指摘有難うございました!

補足日時:2010/05/13 14:47
    • good
    • 0
この回答へのお礼

1050YEN様

ご連絡有難うございます。

私の環境でもエラーの内容は
「定数は、class、structure、または array 型ではなく、組み込み型または列挙型でなければなりません。」
でした。

クラスのプロパティを使用する方法も良いですね!

現在、グローバルな変数や定数をモジュールファイルにまとめて記載していますので
出来れば定数に設定したのですが、もう少し粘ってみて無理そうでしたらプロパティでの設定してみようと思います。

VB6の時は出来たので多分出来ないことは無いと思うのですが・・・
.netの利用が始めてなので??な事ばかりです。。

p.s
変数名のご指摘有難うございました!

お礼日時:2010/05/13 14:48

>VB6の時は出来たので多分出来ないことは無いと思うのですが・・・


いいえ、できません。

VB6の色は定数です。

列挙対
VBRUN.ColorConstants
定数
Const vbRed = 255(&HFF)

VB6と.NETでは、色の宣言が異なります。

それと.NETの標準モジュールでもPropertyは利用できますよ。
    • good
    • 0
この回答へのお礼

いいえ、できません。 VB6の色は定数です。
列挙対VBRUN.ColorConstants
定数Const vbRed = 255(&HFF) VB6と.NETでは、色の宣言が異なります...



言葉足らずでスミマセン・・
VB6の時は定数に色の設定を出来たので.Netでもどんな設定方法でも良いので
出来ないかな・・と言う意味でしたm(_)m (型はSystem.Drawing.Colorで無くても)
やはり無理ですよね・・

出来ない!とわかれば諦めも付くので助かりました。
プロパティでの設定をしようと思います!
お手数をお掛けしてスミマセンでした。

有難うございました!

お礼日時:2010/05/13 17:06

Return COLOR.AliceBlue


↓この方がよいかも
Return System.Drawing.Color.AliceBlue

それ以前に、COLORというネーミングを定数/変数/属性名に行わない方がよいかも?
System.Drawing.Colorとかぶる可能性があるから。。。
    • good
    • 0
この回答へのお礼

すみません。。
初めての質問だったので使い方がまだわからず・・
下記、同じメッセージをしてしまいました。

有難うございました!!

お礼日時:2010/05/13 14:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q色を定数にしたいのですが

お世話になります。VB2005での質問です。

画面のコントロールのバックカラーをコードで変更しようと思っています。
そこで、そのたびごとにRGBの数字を入力するのは面倒なので
定数に入れておきたいのですが、その方法がわかりません。

VB6.0のときは、
Public Const CLR_YELLOW = "&H00C0FFFF"
とモジュールに設定しておき
画面では TextBox1.BackColor = CLR_YELLOW
で色を設定することができました。
上記のコードをVB2005にアップグレードしてみましたが、ますます複雑になってしまいました。
TextBox1.BackColor = System.Drawing.ColorTranslator.FromOle(CInt(CLR_YELLOW))

現在はよくわからないので、いちいち下記のように書いています。
TextBox1.BackColor = Color.FromArgb(255, 255, 192)

「Color.FromArgb(255, 255, 192)」の部分を定数に設定するには
どうしたらよろしいでしょうか。
よろしくお願いいたします。

お世話になります。VB2005での質問です。

画面のコントロールのバックカラーをコードで変更しようと思っています。
そこで、そのたびごとにRGBの数字を入力するのは面倒なので
定数に入れておきたいのですが、その方法がわかりません。

VB6.0のときは、
Public Const CLR_YELLOW = "&H00C0FFFF"
とモジュールに設定しておき
画面では TextBox1.BackColor = CLR_YELLOW
で色を設定することができました。
上記のコードをVB2005にアップグレードしてみましたが、ますます複雑になってしまいました。
...続きを読む

Aベストアンサー

例えば
Private color255_255_192 As System.Drawing.Color = System.Drawing.Color.FromArgb(255, 255, 192)

QVB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?

VB6.0で、例:StrConv(Text, vbFromUnicode)とかで使用する、
「vbFromUnicode」(文字列を Unicode からシステムの既定のコードページに変換する)
は、VB.NETでは使用できないようです。(相当する定数はない?)

「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、
どうすれば良いでしょうか?

Aベストアンサー

思いっきり、例文に「COM1」と書いてますが、USBに書き換えてくださいね^^;

それとふと思ったのですが
udtReaderWriterModeWithoutEncryption
変数は構造体ですよね?

メンバが
lngPortName
lngBardRate
というのは、型宣言をINTEGERに変換してますよね?

ちょっとばかり不安に思ったので、追記しておきました。

参考URL:http://okweb.jp/kotaeru.php3?q=1257613

QCloseとDisposeの違い

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、タイマーコントロールのイベントに記述していますと、それは実行され続けます。

これを防ぐために、Me.Dispose() を使います。すると、きれいにプロセスは終了し、イベントは発生しない模様です。

そこで、「フォームを閉じる」意味のMe.Close() をすべてMe.Dispose() に変えてしまいました。確実にプロセスを破棄出来ると思ったからです。Webで調べると、違いは「再利用できる、できないの違い」という答えがありましたが、それはきっと、ファイルやオブジェクトのことで、フォームの場合は、再びShowまたはShowDialogで表示させることは可能でしたので、特に問題は感じていませんでした。

ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。Me.Close() に変えるとうまくいきました。

わけわからなくなってきました。。。

ちなみに、その残ったフォームは、スタートアップフォームであり、別のフォームからShowまたはShowDialogメソッドで呼び出したものではありません。

ここで4つの仮説を立ててみました。

1. ShowDialogで呼び出したフォームは、Me.Dispose()、Showで呼び出した、あるいは、スタートアップフォームは、Me.Close() すれば破棄できる

2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

3. 呼び出し方ではなく、別の要因が存在する

4. 併記する必要がある場合がある

Me.Close()
Me.Dispose()

または、

Me.Dispose()
Me.Close()



どれが正しいのでしょうか?どなたがご存じの方がいらっしゃいましたら、ご教授いただけませんでしょうか? どうぞよろしくお願い申し上げます。ありがとうございました。

みなさまこんばんわです。よろしくお願い申し上げます。

VB.NET 2008でコーディングしています。
CloseとDisposeの違いについて教えていただきたいのです。

これらのメソッドは、開いたファイルを閉じるときなどにも使いますが、今回お尋ねするのは、フォームを閉じるとき、しかも、自ら呼び出すとき(Me.Close() と、Me.Dispose() )のみに限ったこととしてお話しさせていただきます。

たとえば、ShowDialog() で呼び出したフォームは、そのフォーム内でMe.Close() しても、プロセスは残り、たとえば、...続きを読む

Aベストアンサー

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリケーション設定で、「最後のフォームを閉じるとき」にアプリケーションがシャットダウンする設定になってるのに、シャットダウンしてくれないことが起こりました。調べてみると、Me.Dispose() が原因。
Me.Close() に変えるとうまくいきました。

通常はどちらでもうまくいきます。

>2. ShowDialogで呼び出したフォームは、Me.Dispose()、スタートアップフォームは、Me.Close()、Showで呼び出したフォームは、どちらでも、破棄できる

ShowDialogの場合は、メソッド内部で、ハンドルが破棄されているため、Close()メソッドの際にDispose()メソッドが呼び出されます。

>3. 呼び出し方ではなく、別の要因が存在する

そう思います。

>4. 併記する必要がある場合がある

インスタンスを明示的に破棄したほうがよい場合は多く存在します。
Disposeが使えるメンバはIDisposableをインターフェースとして持っているメンバです。
これらのメンバは、外部とのやり取りを行うものが多くあります。
たとえばSQLClientに含まれるようなメンバです。

外部とのコネクションを確実に破棄を保障してほしいなどという場合がありますよね、このようなときに使用します。

Using構文を使用するのとまったく同じ理由になります。
正確にはUsing構文を使用できるメンバには条件があります、IDisposableをインターフェースとして持っているメンバに限るというものです。

ほかにもガーベージコレクタによるファイナライズを伴うかどうかという違いがあります。
Disposeの場合はファイナライズが同時に行われるため、使用していたメモリ空間を開放することができます。

上記のような理由により、
Me.Close()
Me.Dispose()
は両方書いたほうがよいと思います。

蛇足ですが、
Me.Dispose()
Me.Close()
はエラーになります。
Me.Dispose()により、Me本体(インスタンス)は削除されてしまいます。
存在しないMeに対してCloseメソッドを要求することはできないためです。

Me.Close()
Me.Dispose()
は根本的に違うものです。

formについて、Close()メソッドはフォームの表示を終了させるメソッドです。

ほかのクラスも同様。すべてのDispose()メソッドについて、これはインスタンスの破棄を明示的に行うものです。

>再利用できる、できないの違い

Dispose()はインスタンスが破棄されるため、再びコンストラクタを用いて、インスタンスを生成しないいけません。

一方Close()はインスタンスが残っているので、それを利用することができます。

>1. ところが、アプリ...続きを読む

QColorをRGBで指定する方法

C#ですが、VB関数も使えるので、大丈夫だと
思いますが、質問です。

panel1.BackColor=色

この色の部分を、ループ中で、
グラデーションで、色を変えていこうと
思っています。
そのため、何とか、色を数値で
指定したいのですが、
この方法が、分かりません。
(panel1.BackColor=rgb(r,g,b)とか
指定ができれば、いいと思っています)。

何か分かる人がいましたら、
よろしくお願いします。

Aベストアンサー

これではだめでしたか?

Color myColor = Color.FromArgb(red, green, blue);
.NETのカラーは、アルファチャネル値がありますので、正確には
Color myColor = Color.FromArgb(int alpha, int red, int green, int blue);
です。

QVB.NETで他のプロジェクトで作成したフォームを使う方法

こんにちは。
VB.NETのプロジェクトがぐちゃぐちゃで参照設定とかいろんなの呼んでしまっているので、新しく作成しなおしたいのですが、
新しいプロジェクトでプロジェクトを作成し、前のプロジェクトで必要なファイル(.vb、RESX)を新しいプロジェクトのフォルダにコピーしたのですが、
普通のモジュールは追加>新しい項目の追加でなんとか追加できたのですが、フォームの追加の仕方がわかりません><教えてくださいー

P.S. RESXファイルってフォームのデータが入ってるのでしょうか?そんな気がしてコピーしたのですが。

※VB6.0からVB.NETに以降した際にアップデート情報みたいなのがプログラム上にくっついてしまって.vbファイルも参照項目も増えまくってしまった

Aベストアンサー

ドラッグ&ドロップが使いやすい。
Windowsのエクスプローラでvbファイルをドラッグして、VS.NETのソリューションエクスプローラへドロップする。

QVB.NETのコンボボックスについて

VB6からVB.NETでプログラミングを始めました。
コンボボックスのクリアの仕方や設定の仕方、また
取り出し方等を教えて下さい。

色々とヘルプも見てみたのですが、よく解りません。
宜しくお願い致します。

Aベストアンサー

クリアだけだと思ってました。
追記します。

Itemを操作します


'登録
For i = 1 To 10
  Me.ComboBox1.Items.Add(i.ToString)
Next

'取得
For i = 0 To Me.ComboBox1.Items.Count - 1
  MsgBox(Me.ComboBox1.Items(i).ToString)
Next

'完全クリア
Me.ComboBox1.Items.Clear()

部分クリア
Me.ComboBox1.Items.RemoveAt(Index値)

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

QVB.NETのDataGridで、選択行の特定の列の内容を取得したい

タイトルにあるとおり、DataGridを使用している場合、実行時に選択された行の特定の列の内容を取得するにはどのようにすればよいのでしょうか?

DataGridは複雑で、まだよくわかっていません。
よろしくお願いします。

Aベストアンサー

選択している行番号は、dataGrid1.CurrentRowIndexでわかります。
行、列を指定して各セルにアクセスするには、
dataGrid1(行番号,列番号)でいいので
dataGrid1(dataGrid1.CurrentRowIndex,列番号)
で選択されている行の特定の列の内容を取得できます。
註:番号は、0始まり

QForm間の値の渡し方

1つのForm上のコマンドボタンで別のFormを表示、そこで変数に値を入れ、そのFormを閉じ、元のFormでその変数を使いたいのですが、どうもうまくいきません。
実施したやり方は、一方のFormの宣言領域で、”Public abc As String”を宣言、両方のFormの(変数に値を入れた方と変数を使う方の)プロシージャーの宣言では引数として(abc As String)と記述しました。
因みに、両プロシージャーともイベントプロシージャーです。何か基本的なことができていないのだとは思いますが、どなたか教えていただけませんか?よろしくお願いします。

Aベストアンサー

すでに何件か回答があがっていますので、少し変わった方法をご参考までに。

あまり使われませんが、Formにはtagというプロパティがあります。
これは「文字列形式であれば何でも格納できる」という、上手く使えば便利なプロパティです。

FormAからFormBを呼び出し、FormBで変更した値をFormA.tagにセットします。
ここでFormBをUnloadしてもFormA.tagの値は影響を受けないので自由に使えます。

複数の値を呼び出し元に戻してやる場合に、区切り文字(カンマなど)で連結した文字列をtagに格納し、呼び出し元で区切り文字でsplitして、複数の値を受け渡すという手法をよく使っています。

QSPREAD(GrapeCity)のセルにフォーカスを設定するにはどうしたらいいのでしょうか?

VB.netで作成しています。
SPREAD(GrapeCity)の下記のイベントでSPREADのセルに入力された値をチェックしてエラーが無ければデータベースに登録、または更新をして入力エラーがあった場合、セルにフォーカスを設定するように記述していますがうまくフォーカスを設定する事ができません。

・SPREADのChangeイベント
・SPREADのKeyUpイベント
・SPREADのLeaveイベント
・SPREADのCellLeaveイベント

フォーカスを当てたいセルの行番号とカラム番号をSetActiveCellで指定していますが・・・
フォーカスを設定するにはどうしたらいいのでしょうか?
ご存知の方がいましたらアドバイス宜しくお願いします。
では、失礼します。

Aベストアンサー

サポートページを見ただけなので参考程度にお願いします。
http://file.grapecity.com/patches/SPREADNET25Win_ReleaseNote_2510122002.htm

上記ページの「制限事項と注意点」→「【イベント/メソッド】 」の中に「シート上に表示されていないセルに対してSetActiveCellメソッド呼び出し(またはActiveRowIndex/ActiveColumnIndexプロパティの設定)を行った場合、シートは自動的にスクロールされません。表示させる場合にはFpSpreadクラスのShowActiveCellメソッドを併用してください。 」とあります。
一度試してみては?
また、GrapeCityさんは意外とサポートが優秀ですよ。
以前、SPREADver3.0の頃は何回かバグとってもらいました。(非公開で最新ファイルくれました)
バグでなくても親切に対応してもらった覚えがあるので一度問い合わせをしたほうが近道かもしれませんね。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング