🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

3218閲覧

vb.net Windows FormのRangeBarチャートでX軸の値が同じデータであれば同じ行にプロットしたい

toyotaku

総合スコア103

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/01/07 07:25

前提・実現したいこと

vb.net Windows Formで、MSChartのRangeBarチャートで、
X軸に文字列、Y軸に日付の範囲を指定して、
X軸の値が同じデータであれば同じ行にプロットしたい

発生している問題・エラーメッセージ

例えば、以下のようなデータがある時
X軸文字列,日付FROM,日付TO
ABC,12:00,13:00
ABC,14:00,15:00
DEF,13:30,14:30

以下のようにチャートを表示したい
___ | 12:00 12:30 13:00 14:00 15:00
ABC | ------------- -------
DEF | ---------

が、以下のようにチャートが表示されてしまう。
___ | 12:00 12:30 13:00 14:00 15:00
ABC | -------------
ABC | -------
DEF | ---------

該当のソースコード

RangeBarチャートで以下のようなユーザークラスのLISTをバインドしています。
Public Class sample
Public Property ID() As String
Public Property START_DATE() As Date
Public Property END_DATE() As Date
End Class

chart.DataSource = sampleList
chart.DataBind()

試したこと

文字列ではなく数値X軸の値にすると、期待した動作になりました。
しかし、チャート上のX軸ラベルには文字列を表示したいです。

補足情報(FW/ツールのバージョンなど)

.net framework 4.5

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

sampleクラスに手を入れましたが、このような感じで出来ます。
ただ、変更したsampleクラスのように、質問者さんの扱うデータでIDを数値化できるのかは分かりかねます。

VBNET

1Public Class sample 2 Public Property ID() As Integer 3 Public Property IDName() As String 4 Public Property START_DATE() As Date 5 Public Property END_DATE() As Date 6End Class 7 8Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 9 10 '表示データを作成 11 Dim SampleList As New List(Of sample) 12 SampleList.Add(New sample() With {.ID = 1, .IDName = "ABC", .START_DATE = Date.Parse("12:00"), .END_DATE = Date.Parse("13:00")}) 13 SampleList.Add(New sample() With {.ID = 1, .IDName = "ABC", .START_DATE = Date.Parse("14:00"), .END_DATE = Date.Parse("14:30")}) 14 SampleList.Add(New sample() With {.ID = 2, .IDName = "DEF", .START_DATE = Date.Parse("13:00"), .END_DATE = Date.Parse("14:00")}) 15 16 17 Chart1.Series.Clear() 18 Chart1.Series.Add("TEST") 19 Chart1.Series(0).ChartType = DataVisualization.Charting.SeriesChartType.RangeBar 20 Chart1.Series(0).YValueType = DataVisualization.Charting.ChartValueType.Time 21 22 Chart1.Series(0).Points.DataBind(SampleList, "ID", "START_DATE,END_DATE", "AxisLabel=IDName") 23 24End Sub

投稿2020/01/08 07:09

編集2020/01/08 07:21
YAmaGNZ

総合スコア10469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toyotaku

2020/01/08 08:50

ありがとうございます。 IDの数値化は少々強引なことをすれば何とかなりそうです。 目的の結果が得られましたのでベストアンサーとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問