質問するログイン新規登録

質問編集履歴

3

意図的に内容を抹消する行為にあたるため

2021/09/13 11:37

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,103 @@
1
+ ### 前提・実現したいこと
2
+ 実現したいこと
1
- まことにすみません事情により削除することとなりました
3
+ 列3の入力確定した時点で 列4、5の値を参照して
2
-
4
+  入力値が範囲内ならOK、範囲外ならエラーとして
5
+  そのセルからフォーカス移動をさせない
6
+ 出来ていること
7
+  マウスで選択した場合、選択したセルの値と
8
+  列4,5の値の取得まで
9
+ 知りたいこと
10
+ 上記の状態からセルのマウス選択ではなく、セルの入力完了で連携をさせたいのですが
11
+ その方法がわかりませんでした。
12
+ アドバイス等よろしくお願いします。
13
+ ### 現在のソースコード
14
+ MainWindow.xaml
15
+ ```
16
+ <Window x:Class="WPFGetDataGridCell.MainWindow"
17
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
18
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
19
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
20
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
21
+ xmlns:local="clr-namespace:WPFGetDataGridCell"
22
+ mc:Ignorable="d"
23
+ Title="MainWindow" Height="300" Width="600" >
24
+ <Grid>
25
+ <DataGrid
26
+ Name="dataGrid"
27
+ ItemsSource="{Binding}"
28
+ AutoGenerateColumns="False"
29
+ IsReadOnly="True"
30
+ SelectionMode="Single"
31
+ SelectionUnit="Cell"
32
+ MouseLeftButtonDown="DataGrid_MouseLeftButtonDown"/>
33
+ </Grid>
34
+ </Window>
35
+ ```
36
+ MainWindow.xaml.cs
37
+ ```
38
+ using System;
39
+ using System.Collections.Generic;
40
+ using System.Data;
41
+ using System.Linq;
42
+ using System.Text;
43
+ using System.Threading.Tasks;
44
+ using System.Windows;
45
+ using System.Windows.Controls;
46
+ using System.Windows.Data;
47
+ using System.Windows.Documents;
48
+ using System.Windows.Input;
49
+ using System.Windows.Media;
50
+ using System.Windows.Media.Imaging;
51
+ using System.Windows.Navigation;
52
+ using System.Windows.Shapes;
53
+ namespace WPFGetDataGridCell
3
-
54
+ {
55
+ public partial class MainWindow : Window
56
+ {
57
+ public MainWindow()
58
+ {
59
+ InitializeComponent();
60
+ // データグリッドに5列設定
61
+ for (int i = 0; i < 5; ++i)
62
+ {
63
+ //追加する列はテキストカラムとしてます。
64
+ var column = new DataGridTextColumn();
65
+ column.Header = $"{i}";
66
+ column.Binding = new Binding($"[{i}]");
67
+ dataGrid.Columns.Add(column);
68
+ }
69
+ // データグリッドに3行設定
70
+ var row1 = new string[] { "あああ", "AAAAAA", "0", "0", "90" };
71
+ var row2 = new string[] { "いいい", "BBBBBB", "0", "0", "91" };
72
+ var row3 = new string[] { "ううう", "CCCCCC", "0", "0", "92" };
73
+ var rows = new List<object>();
74
+ rows.Add(row1);
75
+ rows.Add(row2);
76
+ rows.Add(row3);
77
+ dataGrid.ItemsSource = rows;
78
+ }
79
+ private void DataGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
80
+ {
81
+ var dataGrid = sender as DataGrid;
82
+ // 行位置を取得します。
83
+ var rowIndex = dataGrid.Items.IndexOf(dataGrid.CurrentItem);
84
+ // 列位置を取得します。
85
+ var columnIndex = dataGrid.CurrentCell.Column.DisplayIndex;
86
+
87
+ var row = dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex) as DataGridRow;
88
+ var cell = dataGrid.Columns[columnIndex].GetCellContent(row);
89
+ var cellMin = dataGrid.Columns[3].GetCellContent(row);
90
+ var cellMax = dataGrid.Columns[4].GetCellContent(row);
91
+ // セルのテキストブロックキャスト
92
+ var textBlock = cell as TextBlock;
93
+ var textBlockMin = cellMin as TextBlock;
94
+ var textBlockMax = cellMax as TextBlock;
95
+ //全セル値の表示
96
+ MessageBox.Show("入力値="+ textBlock.Text +" 最小値="+ textBlockMin.Text + " 最大値=" + textBlockMax.Text);
97
+ }
98
+ }
99
+ }
100
+ ```
101
+ ### 補足情報(FW/ツールのバージョンなど)
102
+ 環境: Win10 、VS2019、C#
103
+ フレームワーク:なし

2

都合により削除することとなりました。

2021/09/13 11:37

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,113 +1,3 @@
1
- ### 前提・実現したいこと
2
- 実現したいこと
3
- 列3の入力確定した時点で 列4、5の値を参照して
1
+ まことにすみません事情により削除することとなりました
4
-  入力値が範囲内ならOK、範囲外ならエラーとして
5
-  そのセルからフォーカス移動をさせない
6
2
 
7
- 出来ていること
8
-  マウスで選択した場合、選択したセルの値と
9
-  列4,5の値の取得まで
10
-
11
- 知りたいこと
12
- 上記の状態からセルのマウス選択ではなく、セルの入力完了で連携をさせたいのですが
13
- その方法がわかりませんでした。
14
-
15
- アドバイス等よろしくお願いします。
16
-
17
- ### 現在のソースコード
18
-
19
- MainWindow.xaml
20
- ```
21
- <Window x:Class="WPFGetDataGridCell.MainWindow"
22
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
23
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
24
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
25
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
26
- xmlns:local="clr-namespace:WPFGetDataGridCell"
27
- mc:Ignorable="d"
28
- Title="MainWindow" Height="300" Width="600" >
29
- <Grid>
30
- <DataGrid
31
- Name="dataGrid"
32
- ItemsSource="{Binding}"
33
- AutoGenerateColumns="False"
34
- IsReadOnly="True"
35
- SelectionMode="Single"
36
- SelectionUnit="Cell"
37
- MouseLeftButtonDown="DataGrid_MouseLeftButtonDown"/>
38
- </Grid>
39
- </Window>
40
- ```
41
-
42
- MainWindow.xaml.cs
43
- ```
44
- using System;
45
- using System.Collections.Generic;
46
- using System.Data;
47
- using System.Linq;
48
- using System.Text;
49
- using System.Threading.Tasks;
50
- using System.Windows;
51
- using System.Windows.Controls;
52
- using System.Windows.Data;
53
- using System.Windows.Documents;
54
- using System.Windows.Input;
55
- using System.Windows.Media;
56
- using System.Windows.Media.Imaging;
57
- using System.Windows.Navigation;
58
- using System.Windows.Shapes;
59
-
60
- namespace WPFGetDataGridCell
61
- {
3
+
62
- public partial class MainWindow : Window
63
- {
64
- public MainWindow()
65
- {
66
- InitializeComponent();
67
- // データグリッドに5列設定
68
- for (int i = 0; i < 5; ++i)
69
- {
70
- //追加する列はテキストカラムとしてます。
71
- var column = new DataGridTextColumn();
72
- column.Header = $"{i}";
73
- column.Binding = new Binding($"[{i}]");
74
- dataGrid.Columns.Add(column);
75
- }
76
-
77
- // データグリッドに3行設定
78
- var row1 = new string[] { "あああ", "AAAAAA", "0", "0", "90" };
79
- var row2 = new string[] { "いいい", "BBBBBB", "0", "0", "91" };
80
- var row3 = new string[] { "ううう", "CCCCCC", "0", "0", "92" };
81
- var rows = new List<object>();
82
- rows.Add(row1);
83
- rows.Add(row2);
84
- rows.Add(row3);
85
- dataGrid.ItemsSource = rows;
86
- }
87
-
88
- private void DataGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
89
- {
90
- var dataGrid = sender as DataGrid;
91
- // 行位置を取得します。
92
- var rowIndex = dataGrid.Items.IndexOf(dataGrid.CurrentItem);
93
- // 列位置を取得します。
94
- var columnIndex = dataGrid.CurrentCell.Column.DisplayIndex;
95
-
96
- var row = dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex) as DataGridRow;
97
- var cell = dataGrid.Columns[columnIndex].GetCellContent(row);
98
- var cellMin = dataGrid.Columns[3].GetCellContent(row);
99
- var cellMax = dataGrid.Columns[4].GetCellContent(row);
100
-
101
- // セルのテキストブロックキャスト
102
- var textBlock = cell as TextBlock;
103
- var textBlockMin = cellMin as TextBlock;
104
- var textBlockMax = cellMax as TextBlock;
105
- //全セル値の表示
106
- MessageBox.Show("入力値="+ textBlock.Text +" 最小値="+ textBlockMin.Text + " 最大値=" + textBlockMax.Text);
107
- }
108
- }
109
- }
110
- ```
111
- ### 補足情報(FW/ツールのバージョンなど)
112
- 環境: Win10 、VS2019、C#
113
- フレームワーク:なし

1

不要な太文字になっていた箇所を修正、内容については更新なし

2021/09/09 09:07

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
  実現したいこと
3
-  **ボールドテキスト**列3の入力が確定した時点で 列4、5の値を参照して
3
+ 列3の入力が確定した時点で 列4、5の値を参照して
4
4
   入力値が範囲内ならOK、範囲外ならエラーとして
5
5
   そのセルからフォーカス移動をさせない
6
6