質問編集履歴

2

試した内容の追記

2020/05/06 14:49

投稿

m_rase
m_rase

スコア8

test CHANGED
File without changes
test CHANGED
@@ -16,12 +16,6 @@
16
16
 
17
17
 
18
18
 
19
-
20
-
21
- ネットで同じ様な質問を探しましたが、回答が無いままの物しか見つけれませんでした。
22
-
23
-
24
-
25
19
  Windows10
26
20
 
27
21
  Visual Studio 2019
@@ -30,8 +24,202 @@
30
24
 
31
25
 
32
26
 
27
+ 試した事の追記。
28
+
29
+ Panel1の中に3つのパネルを配置。(Panel1から4の幅は同じで、panel1だけ少し高い)
30
+
31
+ Panel1をクリックして、離した際の場所によって、スクロールの場所を変更する様にしました。
32
+
33
+
34
+
33
- 可能であるは分かまし
35
+ やれていない、知りたい事
34
-
36
+
35
- どの様に調べて、勉強て行けば良か等、
37
+ 1)スクロールバーを表示しない様にし
38
+
36
-
39
+ 2)HorizontalScroll.Valueの値を2行入れないと値が更新されない。
40
+
41
+   label2、3のtextを変更している部分で、1行の時では、label2、3の内容が異なる。button1の部分も1行だけだと、スクロールバーのカーソルの位置が動かない。
42
+
43
+
44
+
45
+ ```C#
46
+
47
+ private int _PreviousX;
48
+
49
+ private int _PreviousMem;
50
+
51
+ private int _ScrollMem;
52
+
53
+
54
+
55
+ public Form1()
56
+
57
+ {
58
+
59
+ InitializeComponent();
60
+
61
+ panel1.HorizontalScroll.Minimum = 0;
62
+
63
+ panel1.HorizontalScroll.Maximum = panel1.Width * 3;
64
+
65
+ }
66
+
67
+
68
+
69
+ private void panel1_MouseDown(object sender, MouseEventArgs e)
70
+
71
+ {
72
+
73
+ _ScrollMem = panel1.HorizontalScroll.Value;
74
+
75
+ panel1.Capture = true;
76
+
77
+ _PreviousX = panel1.PointToScreen(e.Location).X;
78
+
79
+ _PreviousMem = _PreviousX;
80
+
81
+
82
+
83
+ label1.Text = System.Convert.ToString(_ScrollMem);
84
+
85
+ }
86
+
87
+
88
+
89
+ private void panel1_MouseMove(object sender, MouseEventArgs e)
90
+
91
+ {
92
+
93
+ int dragPos;
94
+
95
+
96
+
97
+
98
+
99
+ if (panel1.Capture)
100
+
101
+ {
102
+
103
+ // ドラッグ中
104
+
105
+ var x = panel1.PointToScreen(e.Location).X;
106
+
107
+ dragPos = Math.Min(
108
+
109
+ Math.Max(
110
+
111
+ panel1.HorizontalScroll.Minimum,
112
+
113
+ panel1.HorizontalScroll.Value + _PreviousX - x),
114
+
115
+ panel1.HorizontalScroll.Maximum);
116
+
117
+
118
+
119
+ panel1.HorizontalScroll.Value = dragPos;
120
+
121
+ panel1.HorizontalScroll.Value = dragPos;
122
+
123
+ _PreviousX = x;
124
+
125
+ }
126
+
127
+ }
128
+
129
+
130
+
131
+ private void panel1_MouseUp(object sender, MouseEventArgs e)
132
+
133
+ {
134
+
135
+ int mouseValue;
136
+
137
+ int dispPos;
138
+
139
+
140
+
141
+ var xx = panel1.PointToScreen(e.Location).X;
142
+
37
- 進める上での調べ方やヒントがあれば教えて頂けないでしょうか。
143
+ mouseValue = _PreviousMem - xx;
144
+
145
+
146
+
147
+ if (Math.Abs(mouseValue) < (panel1.Width / 2))
148
+
149
+ {
150
+
151
+ dispPos = _ScrollMem; // 移動量が半分以下の場合は元の位置
152
+
153
+ }
154
+
155
+ else if (mouseValue < 0)
156
+
157
+ {
158
+
159
+ dispPos = _ScrollMem - panel1.Width;
160
+
161
+ }
162
+
163
+ else
164
+
165
+ {
166
+
167
+ dispPos = _ScrollMem + panel1.Width;
168
+
169
+ }
170
+
171
+
172
+
173
+ dispPos = Math.Min(
174
+
175
+ Math.Max(
176
+
177
+ panel1.HorizontalScroll.Minimum,dispPos),panel1.HorizontalScroll.Maximum);
178
+
179
+
180
+
181
+ panel1.HorizontalScroll.Value = dispPos;
182
+
183
+ panel1.HorizontalScroll.Value = dispPos;
184
+
185
+
186
+
187
+ label2.Text = System.Convert.ToString(dispPos);
188
+
189
+ label3.Text = System.Convert.ToString(panel1.HorizontalScroll.Value);
190
+
191
+
192
+
193
+ panel1.Capture = false;
194
+
195
+
196
+
197
+ }
198
+
199
+
200
+
201
+ private void button1_Click(object sender, EventArgs e)
202
+
203
+ {
204
+
205
+ panel1.HorizontalScroll.Value = panel1.Width * 1;
206
+
207
+ panel1.HorizontalScroll.Value = panel1.Width * 1;
208
+
209
+ }
210
+
211
+
212
+
213
+ private void button2_Click(object sender, EventArgs e)
214
+
215
+ {
216
+
217
+ panel1.HorizontalScroll.Value = panel1.Width * 2;
218
+
219
+ panel1.HorizontalScroll.Value = panel1.Width * 2;
220
+
221
+ }
222
+
223
+ }
224
+
225
+ ```

1

追記を行いました。

2020/05/06 14:49

投稿

m_rase
m_rase

スコア8

test CHANGED
File without changes
test CHANGED
@@ -27,3 +27,11 @@
27
27
  Visual Studio 2019
28
28
 
29
29
  Windowsフォームアプリ
30
+
31
+
32
+
33
+ 可能である事は分かりました。
34
+
35
+ どの様に調べて、勉強して行けば良いか等、
36
+
37
+ 進める上での調べ方やヒントがあれば教えて頂けないでしょうか。