質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.37%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

2回答

1043閲覧

c# visual studio2019 wpf データグリッド

rilley

総合スコア0

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

1クリップ

投稿2022/01/26 05:20

編集2022/01/26 07:20

visual studio2019 c# wpf datagrid
はじめまして。質問させてください。

※他サイトにて同じ同じ質問質問を出しています。

データグリッドに[値][表示形式]列があります。
表示形式には、月日(MM/dd)・時分秒(HH:mm:ss)・実数値・整数値があり、それに合わせて値が表示、編集できるようにしなければなりません。
表示形式に合わせてそれぞれの形に変換して表示、
その形式のまま編集させることは可能なのでしょうか?
月日であればMM/ddの"/"を削除させないように制御して数値のみ編集できるようにグリッドビュー上で出来る方法はあるのでしょうか?

よろしくお願いします。

回答へのコメントの仕方へのコメントの仕方がわからないのでここに書きますここに書きますが、MM/ddまたはHH:mm:ssの形式形式(/または:)を削除させないで編集編集させることが可能な方法ことが可能な方法はあるのでしょうか?

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

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

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

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

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

guest

回答2

0

月日であればMM/ddの"/"を削除させないように制御して数値のみ編集できるようにグリッドビュー上で出来る方法はあるのでしょうか?

値の検証(Validation)で対応するのが普通かなとは思います。
つまり「不正な入力はできるがエラーになって編集を終了させない」ということです。
方法: DataGrid コントロールを使用して検証を実装する - WPF .NET Framework | Microsoft Docs

あるいはCellEditingTemplateに、その型に特化したコントロールを使う方法もあります。
MSDN マガジン: データ ポイント - WPF の DataGrid 列のテンプレートを構成してユーザー エクスペリエンスを向上する | Microsoft Docs

xceedsoftware/wpftoolkit: All the controls missing in WPF. Over 1 million downloads.

もちろん数値しか入力できないTextBoxのようなものを作ればいいのでしょうが、ちゃんとやろうとするとかなりめんどくさいです。


データグリッドに[値][表示形式]列があります。
表示形式には、月日(MM/dd)・時分秒(HH:mm:ss)・実数値・整数値があり、それに合わせて値が表示、編集できるようにしなければなりません。

DataGridには2列しかないということでしょうか?
表示形式は(コンボボックス等で)編集できるんでしょうか?
そもそもDataGridの必要があるんでしょうか?^^;

投稿2022/01/26 11:20

編集2023/07/29 14:43
TN8001

総合スコア9819

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

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

0

あくまでテキストベースの編集で構わないという認識で大丈夫でしょうか?
※日付の場合ならDatePickerなどの編集方法も一応ありますが...「型」列の変更に応じてDatePickerを使うなら少し複雑にはなりますね👀(できないことはないです)

DataGridColumnの内容とBindingする際にValueConverterを使うのが一番簡単だとは思います。
ConverterParameterに「型」列の情報をBindingしておけば適切に相互変換できるのではないでしょうか?

ViewModelに表示用のプロパティを作成し、そのプロパティを監視して変更があった場合に、「型」の情報を用いて変換(...というかParce)処理をするプロパティを作るのも手ですね👀

ただ、あくまで表示に関することですからMVVM的には前者の方が私は若干好きかなぁ...
どちらの案もありだとは思います^^

型が数値の時は数値、ピリオド以外の入力は受け付けない...とかになるとKeyDownイベントなどでキャンセルの処理を実装することになるでしょうね...
(Reactive的な手法でも達成はできると思います。私はReactivePropertyライブラリを使いますが👀)

投稿2022/01/26 05:48

HiraKazu1124

総合スコア322

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問