人に聞けない痔の悩み、これでスッキリ >>

Visual basic 2010を使用しています。


Datetimrpickerの選択が今日ならComboBox1の選択をTextbox1へ表示」
というプログラムを書きたいのですが、datetimepickerの扱い方がわからず、うまくいきません。

たとえばComboBoxなら、「ComboBox.items.item(0)」で一番上、
つまり今日の日付を取得できるのですが、「datetimepicker.items.item(0)」だとdatetimepicker のメンバーではないというエラーが出て実行できません。


以上、宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Dim d As DateTime = Date.Parse(DateTimePicker1.Value.ToString("yyyy/MM/dd"))



If d = Date.Today Then TextBox1.Text = ComboBox1.Text

こんな感じとか?
    • good
    • 0

VBは使いませんが……



>つまり今日の日付を取得できるのですが、「datetimepicker.items.item(0)」だとdatetimepicker のメンバーではないというエラーが出て

ヘルプ(リファレンス)くらい見ましょうよ。
http://msdn.microsoft.com/ja-jp/library/system.w …

Valueプロパティで選択している日時がDateTime型で取得できるのようですが。

>選択が今日なら

DateTime.Todayプロパティで「今日」の日付は取得できますから、それで比較すればよいでしょう。
# DateTimePicker.Valueプロパティで取得したデータに時間の情報が入っていたら単純比較ってわけには行かないかも知れませんが。
# DateTimePickerで扱うデータの書式なり指定できたと思いますので、日付だけで時刻のデータは扱わないようにマスクすればよいかと。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

QVB2005 DateTimePickerのカレンダー表示制御

お世話になります。
現在、DataGridViewの制御に合わせてカレンダーを表示したりしようと
しているのですが、MonthCalendarだと日付「範囲」が選択できて
しまうようなので、あまり嬉しくない状況です。
そこで、DateTimePickerを使用して、ロジックで強制的にカレンダーを
表示したり非表示にしたりしたいと思っています。
表示の方は、ググってみたら何とか検索できたので、それを基に
やってみたら成功したのですが、カレンダーを閉じる方の処理が
うまくいきません。
コントロール(サブクラス)側でEscapeキーをWndProcで送ったり
してみたのですが……
正しいやり方をご存知の方がいらっしゃいましたら、お教えください。
または、MonthCalendarで単一日付のみを選択する方法を教えて頂くのでも
構いません。
よろしくお願いします。

Aベストアンサー

>MonthCalendarだと日付「範囲」が選択できてしまうようなので、

MaxSelectionCount = 1 では?

(VisualBasic2005 ExpressEditionです)

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

こんにちは。

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

Aベストアンサー

こんばんは.

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

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

QVB.NETのテキストボックスの書式指定

VB.NETで開発練習中です。

フォームへ呼び出したデーターを、数値データであれば
カンマ区切りとか、小数点以下の桁数を指定するのは
どうしたらできるのでしょうか?
ソースのACCESSのテーブルには指定してあっても、
呼び出したデータには当然反映されませんよね。
初歩的ですがどなたか教えてください。
よろしくお願いします。

Aベストアンサー

No.3です。

私のレスは間違いでした。

FormのLoadイベントでテキストボックスに値を入れているのですね?

であれば、TextBoxのTextChangedイベントが発生します。このイベントで処理をします。

テキストボックスが多数あるのであれば、コントロール配列を使って処理をすればいいでしょう。

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して、複数の値を受け渡すという手法をよく使っています。

QDataGridViewの、選択されている行を取り出したい

いつもお世話になっております。

DataGridViewに関して、選択されているレコードをDataRow型で別フォームに渡してから、各項目をテキストボックスに表示したいのですがうまくいきません(DataRow型にこだわっているわけではないのですが、レコード1件丸ごと取得する型を他に知らないので例として挙げました)。

DataGridViewのCurrentRowプロパティや、SelectedRows(0)をDataRow型に代入する試みをしましたが、型変換できませんでした。

DataGridViewで選択されているレコード一件まるごと変数に渡す方法というのはあるのでしょうか?

ちなみに、SelectionModeはSelectFullRowに、MultiSelectはFalseにしてあります。

ご存知の方ご教授いただけると助かります。
よろしくお願いします。

Aベストアンサー

>おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
>参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。

えー・・・スイマセン
今度はコーディングして確認してみたところ、
なにやら、1ステップすっ飛ばしていました

下記の手順にて取得可能です

[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data.DataRow dr = (System.Data.DataRow)drv.Row;

[VB2005]
Dim dgr As System.Windows.Forms.DataGridViewRow = Me.DataGridView1.CurrentRow
Dim drv As System.Data.DataRowView = CType(dgr.DataBoundItem, System.Data.DataRowView)
Dim dr As System.Data.DataRow = CType(drv.Row, System.Data.DataRow)

※最後のキャストを変更すれば、型付データセットにも対応可能のはずです

>おっしゃるとおりやってみたのですが、どうもやはり型変換ができませんでした。
>参照しているのはDataTable型なわけですから、DataRowも取り出せそうな気はするのですが。。。

えー・・・スイマセン
今度はコーディングして確認してみたところ、
なにやら、1ステップすっ飛ばしていました

下記の手順にて取得可能です

[C#]
System.Windows.Forms.DataGridViewRow dgr = this.DataGridView1.CurrentRow;
System.Data.DataRowView drv = (System.Data.DataRowView)dgr.DataBoundItem;
System.Data...続きを読む

QVBとアクセスでSQL文に変数を使いたいのですが

したいことはレコードの挿入をSQL文で変数を使用して処理したいのですがうまく動作してくれません

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'(変数1)','(変数2)','(変数3)')"

変数の部分が置き換わりません、いろいろ調べてみたのですがどうもわかりませんvaluesでは変数を使えないのでしょうか?

もしそうだとするとどのようにすればレコードを挿入するSQL文で変数を利用できるのかをおしえていただけないでしょうか

Aベストアンサー

文字列なんで、&で連結すればOKです。

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'" & 変数1 & "','" & 変数2 & "','" &(変数3)& "')"

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

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

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

Aベストアンサー

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

QVB.NETでタイマー作成

タイトルのとおり、VB.NETで、指定した時間(分単位)を過ぎたときにアラームをならし、メッセージを出すというアプリを作成しています。
はじめは「Sleep」を使っていたのですが、スリープしている間は操作が利かなくなってしまうため、「Timer」コントロールを使って、数えたいと思っています。
どのようなコードが考えられるでしょうか?教えてください。

Aベストアンサー

そのタイマーはどの程度の精度を求められるのでしょうか?

タイマーコントロールはあまり精度がよくないので(他の負荷によってイベントが起きる時間が変わる事がある)、正確なタイマーを求めたいならあまり向きません。だいたいでよければタイマーコントロールでインターバルを指定すればいいかと思われます。

とはいっても、.NETはさわった事がないのですが、
VB 6でしたら、このようなコードが有用です。

dim i as double
dim j as long

j = (指定した分) * 60 '[秒]
i = Timer + j '[秒]

do i > Timer
doEvents
loop

Beep
MsgBox "メッセージ"

Timer関数は0時からの経過時間を秒単位での値を返すステートメントです。実際には倍密度で、コンマ二桁までの値(10ミリ秒単位)を取得できます。

i の値に現在から秒単位で時間をプラスして、その時間が過ぎるまで Do While で回す。 doEventsコマンドは他の処理にCPU処理をあけ渡すコマンドです(これをいれないとSleepと一緒で結局固まります)。

Do Whileを使わずタイマーコントロールを使うなら、50ミリ秒単位くらいでインターバルを指定して、グローバル変数にいれておいた値と比べて……とかすればいいと思います。

以上です。

そのタイマーはどの程度の精度を求められるのでしょうか?

タイマーコントロールはあまり精度がよくないので(他の負荷によってイベントが起きる時間が変わる事がある)、正確なタイマーを求めたいならあまり向きません。だいたいでよければタイマーコントロールでインターバルを指定すればいいかと思われます。

とはいっても、.NETはさわった事がないのですが、
VB 6でしたら、このようなコードが有用です。

dim i as double
dim j as long

j = (指定した分) * 60 '[秒]
i = Timer + j '...続きを読む

QTextBoxでEnterキーを押すと、にあるButtonを押したのと同じ効果を出す方法

VB初心者です。
まだ、はじめたばかりなので、上手く質問を説明できませんが、よろしくお願いします。

環境はVisualBasic .net 2003です。

フォームにテキストボックス(TextBox)とボタン(Button)があります。
テキストボックス内でEnterキーを押すと、ボタン(Button)を押したのと同様の効果をだしたいのですが。
VC++6.0だと、SendMessage(WM_COMMAND , .....
のようなやり方でできたはずですが・・・
---------------------------
テキストボックスのコード
Private Sub txtTest_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTest.KeyDown
If (e.KeyCode = Keys.Enter) Then
'★★★ここでどういうコードを書いてよいかわかりません。
End If
End Sub
----------------------------
ボタンを押したときのイベントハンドラ
Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTest.Click
    ボタンを押したら、このイベントハンドラを呼び出したい。
    もしくは、間接的に呼び出したい。
-------
どなたか、やり方をご存知の方がいらっしゃいましたら、よろしくお願いします。

VB初心者です。
まだ、はじめたばかりなので、上手く質問を説明できませんが、よろしくお願いします。

環境はVisualBasic .net 2003です。

フォームにテキストボックス(TextBox)とボタン(Button)があります。
テキストボックス内でEnterキーを押すと、ボタン(Button)を押したのと同様の効果をだしたいのですが。
VC++6.0だと、SendMessage(WM_COMMAND , .....
のようなやり方でできたはずですが・・・
---------------------------
テキストボックスのコード
Private Sub txtTest_KeyDown(ByVal ...続きを読む

Aベストアンサー

>SendMessage(WM_COMMAND
とは、多少意味合いが異なりますが。。。

btnTest.PerformClick()
と行うと、btnTestオブジェクトと関連付いたイベントハンドラが起動します。
http://okwave.jp/kotaeru.php3?q=1688744


また、エンターキーの動きに限るのであれば、フォームのAcceptButtonプロパティを利用すると、コーディングが不要です。ついでにエスケープにも動作を持たせたいのであれば、CancelButtonプロパティを利用するといいです。



どうしてもCと全く同様に、イベントを起こすのであれば、Cと同じ手続きでAPIで起こせばよいと思います。
http://okwave.jp/kotaeru.php3?q=199357


Public Class Form1
  Inherits System.Windows.Forms.Form

  Private Declare Auto Function SendMessage Lib "user32" ( _
    ByVal hWnd As Integer, _
    ByVal wMsg As Integer, _
    ByVal wParam As Integer, _
    ByVal lParam As Integer _
  ) As Integer
  Private Declare Auto Function GetDlgCtrlID Lib "user32" ( _
    ByVal hWnd As Integer _
  ) As Integer

  Private Const WM_COMMAND As Integer = &H111
  Private Const BN_CLICKED As Integer = &H0

#Region " Windows フォーム デザイナで生成されたコード "
#End Region

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    btnTest.PerformClick()
    SendMessage( _
      Me.Handle.ToInt32, _
      WM_COMMAND, _
      BN_CLICKED * GetDlgCtrlID(btnTest.Handle.ToInt32) * &H10000, _
      btnTest.Handle.ToInt32 _
    )
  End Sub
End Class

>SendMessage(WM_COMMAND
とは、多少意味合いが異なりますが。。。

btnTest.PerformClick()
と行うと、btnTestオブジェクトと関連付いたイベントハンドラが起動します。
http://okwave.jp/kotaeru.php3?q=1688744


また、エンターキーの動きに限るのであれば、フォームのAcceptButtonプロパティを利用すると、コーディングが不要です。ついでにエスケープにも動作を持たせたいのであれば、CancelButtonプロパティを利用するといいです。



どうしてもCと全く同様に、イベントを起こすのであれば、...続きを読む

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値)


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

人気Q&Aランキング

おすすめ情報