OSDN Git Service

・ 「DTXCreatorプロジェクト」と「実行時フォルダ(DTXCreator)」を trunk/ に追加。
[dtxmania/dtxmania.git] / DTXCreatorプロジェクト / コード / 05.譜面 / C選択モード管理.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.Windows.Forms;\r
5 using System.Drawing;\r
6 using DTXCreator.UndoRedo;\r
7 using DTXCreator.Properties;\r
8 \r
9 namespace DTXCreator.譜面\r
10 {\r
11         public class C選択モード管理\r
12         {\r
13                 public C選択モード管理( Cメインフォーム formメインフォーム )\r
14                 {\r
15                         this._Form = formメインフォーム;\r
16                         this.mgr譜面管理者ref = formメインフォーム.mgr譜面管理者;\r
17                 }\r
18                 public void t検索する()\r
19                 {\r
20                         this._Form.dlgチップパレット.t一時的に隠蔽する();\r
21                         this.t検索する・メイン();\r
22                         this._Form.dlgチップパレット.t一時的な隠蔽を解除する();\r
23                 }\r
24                 public void t個別選択解除( Cチップ cc )\r
25                 {\r
26                         Cチップ位置用UndoRedo redo = new Cチップ位置用UndoRedo( this.mgr譜面管理者ref.pチップの存在する小節を返す( cc ).n小節番号0to3599, cc.nレーン番号0to, cc.n位置grid, cc.n値・整数1to1295 );\r
27                         this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択解除のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択解除のRedo ), redo, redo ) );\r
28                         this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
29                         cc.b確定選択中 = false;\r
30                 }\r
31                 public void t全チップの選択を解除する()\r
32                 {\r
33                         this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
34                         foreach( KeyValuePair<int, C小節> pair in this.mgr譜面管理者ref.dic小節 )\r
35                         {\r
36                                 C小節 c小節 = pair.Value;\r
37                                 for( int j = 0; j < c小節.listチップ.Count; j++ )\r
38                                 {\r
39                                         Cチップ cチップ = c小節.listチップ[ j ];\r
40                                         if( cチップ.n枠外レーン数 != 0 )\r
41                                         {\r
42                                                 Cチップ cc = new Cチップ();\r
43                                                 cc.tコピーfrom( cチップ );\r
44                                                 Cチップ配置用UndoRedo redo = new Cチップ配置用UndoRedo( c小節.n小節番号0to3599, cc );\r
45                                                 this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ配置用UndoRedo>( null, new DGUndoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者ref.tチップ削除のUndo ), new DGRedoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者ref.tチップ削除のRedo ), redo, redo ) );\r
46                                                 c小節.listチップ.Remove( cチップ );\r
47                                                 j = -1;\r
48                                         }\r
49                                 }\r
50                         }\r
51                         for( int i = 0; i < this.mgr譜面管理者ref.dic小節.Count; i++ )\r
52                         {\r
53                                 C小節 c小節2 = this.mgr譜面管理者ref.dic小節[ i ];\r
54                                 for( int k = 0; k < c小節2.listチップ.Count; k++ )\r
55                                 {\r
56                                         Cチップ cチップ3 = c小節2.listチップ[ k ];\r
57                                         if( cチップ3.b確定選択中 || cチップ3.bドラッグで選択中 )\r
58                                         {\r
59                                                 this.mgr譜面管理者ref.bOPENチップである( cチップ3 );\r
60                                                 for( int m = 0; m < c小節2.listチップ.Count; m++ )\r
61                                                 {\r
62                                                         Cチップ cチップ4 = c小節2.listチップ[ m ];\r
63                                                         if( ( ( k != m ) && ( cチップ3.nレーン番号0to == cチップ4.nレーン番号0to ) ) && ( ( cチップ3.n位置grid == cチップ4.n位置grid ) && !cチップ4.b確定選択中 ) )\r
64                                                         {\r
65                                                                 Cチップ cチップ5 = new Cチップ();\r
66                                                                 cチップ5.tコピーfrom( cチップ4 );\r
67                                                                 Cチップ配置用UndoRedo redo2 = new Cチップ配置用UndoRedo( c小節2.n小節番号0to3599, cチップ5 );\r
68                                                                 this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ配置用UndoRedo>( null, new DGUndoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者ref.tチップ削除のUndo ), new DGRedoを実行する<Cチップ配置用UndoRedo>( this.mgr譜面管理者ref.tチップ削除のRedo ), redo2, redo2 ) );\r
69                                                                 c小節2.listチップ.RemoveAt( m );\r
70                                                                 k = -1;\r
71                                                                 break;\r
72                                                         }\r
73                                                 }\r
74                                         }\r
75                                 }\r
76                         }\r
77                         foreach( KeyValuePair<int, C小節> pair2 in this.mgr譜面管理者ref.dic小節 )\r
78                         {\r
79                                 C小節 c小節3 = pair2.Value;\r
80                                 for( int n = 0; n < c小節3.listチップ.Count; n++ )\r
81                                 {\r
82                                         Cチップ cチップ6 = c小節3.listチップ[ n ];\r
83                                         if( cチップ6.b確定選択中 )\r
84                                         {\r
85                                                 Cチップ位置用UndoRedo redo3 = new Cチップ位置用UndoRedo( c小節3.n小節番号0to3599, cチップ6.nレーン番号0to, cチップ6.n位置grid, cチップ6.n値・整数1to1295 );\r
86                                                 this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択解除のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択解除のRedo ), redo3, redo3 ) );\r
87                                                 cチップ6.b移動済 = false;\r
88                                                 cチップ6.bドラッグで選択中 = false;\r
89                                                 cチップ6.b確定選択中 = false;\r
90                                         }\r
91                                 }\r
92                         }\r
93                         this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
94                         this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
95                 }\r
96                 public void t全チップを選択する()\r
97                 {\r
98                         this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
99                         foreach( KeyValuePair<int, C小節> pair in this.mgr譜面管理者ref.dic小節 )\r
100                         {\r
101                                 C小節 c小節 = pair.Value;\r
102                                 for( int i = 0; i < c小節.listチップ.Count; i++ )\r
103                                 {\r
104                                         Cチップ cチップ = c小節.listチップ[ i ];\r
105                                         if( !cチップ.b確定選択中 )\r
106                                         {\r
107                                                 Cチップ位置用UndoRedo redo = new Cチップ位置用UndoRedo( c小節.n小節番号0to3599, cチップ.nレーン番号0to, cチップ.n位置grid, cチップ.n値・整数1to1295 );\r
108                                                 this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択のRedo ), redo, redo ) );\r
109                                                 cチップ.bドラッグで選択中 = false;\r
110                                                 cチップ.b確定選択中 = true;\r
111                                         }\r
112                                 }\r
113                         }\r
114                         this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
115                         this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
116                         this._Form.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();\r
117                         this._Form.pictureBox譜面パネル.Refresh();\r
118                 }\r
119                 public void t置換する()\r
120                 {\r
121                         this._Form.dlgチップパレット.t一時的に隠蔽する();\r
122                         this.t置換する・メイン();\r
123                         this._Form.dlgチップパレット.t一時的な隠蔽を解除する();\r
124                 }\r
125                 internal void MouseClick( MouseEventArgs e )\r
126                 {\r
127                         if( e.Button == MouseButtons.Right )\r
128                         {\r
129                                 this._Form.t選択モードのコンテクストメニューを表示する( e.X, e.Y );\r
130                         }\r
131                 }\r
132                 internal void MouseDown( MouseEventArgs e )\r
133                 {\r
134                         if( e.Button == MouseButtons.Left )\r
135                         {\r
136                                 Cチップ cc = this.mgr譜面管理者ref.p指定された座標dotにあるチップを返す( e.X, e.Y );\r
137                                 if( ( cc == null ) || !cc.b確定選択中 )\r
138                                 {\r
139                                         this.t範囲選択開始処理( e );\r
140                                 }\r
141                                 else if( ( Control.ModifierKeys & Keys.Control ) != Keys.Control )\r
142                                 {\r
143                                         this.t移動開始処理( e );\r
144                                 }\r
145                                 else\r
146                                 {\r
147                                         this.t個別選択解除( cc );\r
148                                 }\r
149                         }\r
150                 }\r
151                 internal void MouseMove( MouseEventArgs e )\r
152                 {\r
153                         if( e.Button == MouseButtons.Left )\r
154                         {\r
155                                 if( this.b範囲選択のためにドラッグ中 )\r
156                                 {\r
157                                         this.t範囲選択継続処理( e );\r
158                                 }\r
159                                 if( this.b移動のためにドラッグ中 )\r
160                                 {\r
161                                         this.t移動継続処理( e );\r
162                                 }\r
163                         }\r
164                         else\r
165                         {\r
166                                 if( this.b範囲選択のためにドラッグ中 )\r
167                                 {\r
168                                         this.t範囲選択終了処理( e );\r
169                                 }\r
170                                 if( this.b移動のためにドラッグ中 )\r
171                                 {\r
172                                         this.t移動終了処理( e );\r
173                                 }\r
174                         }\r
175                         this._Form.pictureBox譜面パネル.Refresh();\r
176                 }\r
177                 internal void Paint( PaintEventArgs e )\r
178                 {\r
179                         if( this.b範囲選択のためにドラッグ中 )\r
180                         {\r
181                                 this.t現在の選択範囲を描画する( e.Graphics );\r
182                         }\r
183                 }\r
184 \r
185                 #region [ private ]\r
186                 //-----------------\r
187                 private Cメインフォーム _Form;\r
188                 private SolidBrush br選択領域ブラシ = new SolidBrush( Color.FromArgb( 80, 0x37, 0x37, 0xff ) );\r
189                 private bool b移動のためにドラッグ中;\r
190                 private bool b範囲選択のためにドラッグ中;\r
191                 private C譜面管理 mgr譜面管理者ref;\r
192                 private Point pt現在のドラッグ開始位置dot = new Point();\r
193                 private Point pt現在のドラッグ終了位置dot = new Point();\r
194                 private Point pt前回の位置LaneGrid = new Point();\r
195 \r
196                 private void tチップを横に移動する( Cチップ cc, int n移動量lane )\r
197                 {\r
198                         int num2;\r
199                         int count = this.mgr譜面管理者ref.listレーン.Count;\r
200                         if( cc.n枠外レーン数 < 0 )\r
201                         {\r
202                                 num2 = cc.n枠外レーン数 + n移動量lane;\r
203                         }\r
204                         else if( cc.n枠外レーン数 > 0 )\r
205                         {\r
206                                 num2 = ( ( count - 1 ) + cc.n枠外レーン数 ) + n移動量lane;\r
207                         }\r
208                         else\r
209                         {\r
210                                 num2 = cc.nレーン番号0to + n移動量lane;\r
211                         }\r
212                         if( num2 < 0 )\r
213                         {\r
214                                 cc.n枠外レーン数 = num2;\r
215                         }\r
216                         else if( num2 >= count )\r
217                         {\r
218                                 cc.n枠外レーン数 = num2 - ( count - 1 );\r
219                         }\r
220                         else\r
221                         {\r
222                                 cc.nレーン番号0to = num2;\r
223                                 cc.n枠外レーン数 = 0;\r
224                         }\r
225                         cc.b移動済 = true;\r
226                         this._Form.b未保存 = true;\r
227                 }\r
228                 private void tチップを縦に移動する( Cチップ cc, int n移動量grid, C小節 csチップのある小節 )\r
229                 {\r
230                         cc.b移動済 = true;\r
231                         int num = cc.n位置grid + n移動量grid;\r
232                         if( num < 0 )\r
233                         {\r
234                                 int num2 = csチップのある小節.n小節番号0to3599;\r
235                                 C小節 c小節 = null;\r
236                                 while( num < 0 )\r
237                                 {\r
238                                         num2--;\r
239                                         c小節 = this.mgr譜面管理者ref.p小節を返す( num2 );\r
240                                         if( c小節 == null )\r
241                                         {\r
242                                                 return;\r
243                                         }\r
244                                         num += c小節.n小節長倍率を考慮した現在の小節の高さgrid;\r
245                                 }\r
246                                 Cチップ item = new Cチップ();\r
247                                 item.tコピーfrom( cc );\r
248                                 item.n位置grid = num;\r
249                                 csチップのある小節.listチップ.Remove( cc );\r
250                                 c小節.listチップ.Add( item );\r
251                         }\r
252                         else if( num >= csチップのある小節.n小節長倍率を考慮した現在の小節の高さgrid )\r
253                         {\r
254                                 int num3 = csチップのある小節.n小節番号0to3599;\r
255                                 C小節 c小節2 = csチップのある小節;\r
256                                 while( num >= c小節2.n小節長倍率を考慮した現在の小節の高さgrid )\r
257                                 {\r
258                                         num -= c小節2.n小節長倍率を考慮した現在の小節の高さgrid;\r
259                                         num3++;\r
260                                         c小節2 = this.mgr譜面管理者ref.p小節を返す( num3 );\r
261                                         if( c小節2 == null )\r
262                                         {\r
263                                                 c小節2 = new C小節( num3 );\r
264                                                 this.mgr譜面管理者ref.dic小節.Add( num3, c小節2 );\r
265                                         }\r
266                                 }\r
267                                 Cチップ cチップ2 = new Cチップ();\r
268                                 cチップ2.tコピーfrom( cc );\r
269                                 cチップ2.n位置grid = num;\r
270                                 csチップのある小節.listチップ.Remove( cc );\r
271                                 c小節2.listチップ.Add( cチップ2 );\r
272                         }\r
273                         else\r
274                         {\r
275                                 cc.n位置grid = num;\r
276                         }\r
277                         this._Form.b未保存 = true;\r
278                 }\r
279                 private void tチップ移動のRedo( Cチップ位置用UndoRedo ur変更前, Cチップ位置用UndoRedo ur変更後 )\r
280                 {\r
281                         C小節 c小節 = this.mgr譜面管理者ref.p小節を返す( ur変更前.n小節番号0to );\r
282                         if( c小節 != null )\r
283                         {\r
284                                 for( int i = 0; i < c小節.listチップ.Count; i++ )\r
285                                 {\r
286                                         Cチップ item = c小節.listチップ[ i ];\r
287                                         if( ( item.b確定選択中 && ( item.n位置grid == ur変更前.n位置grid ) ) && ( item.nレーン番号0to == ur変更前.nレーン番号0to ) )\r
288                                         {\r
289                                                 C小節 c小節2 = this.mgr譜面管理者ref.p小節を返す( ur変更後.n小節番号0to );\r
290                                                 if( c小節2 != null )\r
291                                                 {\r
292                                                         c小節.listチップ.RemoveAt( i );\r
293                                                         item.nレーン番号0to = ur変更後.nレーン番号0to;\r
294                                                         item.n位置grid = ur変更後.n位置grid;\r
295                                                         c小節2.listチップ.Add( item );\r
296                                                         break;\r
297                                                 }\r
298                                         }\r
299                                 }\r
300                                 this._Form.pictureBox譜面パネル.Refresh();\r
301                         }\r
302                 }\r
303                 private void tチップ移動のUndo( Cチップ位置用UndoRedo ur変更前, Cチップ位置用UndoRedo ur変更後 )\r
304                 {\r
305                         C小節 c小節 = this.mgr譜面管理者ref.p小節を返す( ur変更後.n小節番号0to );\r
306                         if( c小節 != null )\r
307                         {\r
308                                 for( int i = 0; i < c小節.listチップ.Count; i++ )\r
309                                 {\r
310                                         Cチップ item = c小節.listチップ[ i ];\r
311                                         if( ( item.b確定選択中 && ( item.n位置grid == ur変更後.n位置grid ) ) && ( item.nレーン番号0to == ur変更後.nレーン番号0to ) )\r
312                                         {\r
313                                                 C小節 c小節2 = this.mgr譜面管理者ref.p小節を返す( ur変更前.n小節番号0to );\r
314                                                 if( c小節2 != null )\r
315                                                 {\r
316                                                         c小節.listチップ.RemoveAt( i );\r
317                                                         item.nレーン番号0to = ur変更前.nレーン番号0to;\r
318                                                         item.n位置grid = ur変更前.n位置grid;\r
319                                                         c小節2.listチップ.Add( item );\r
320                                                         break;\r
321                                                 }\r
322                                         }\r
323                                 }\r
324                                 this._Form.pictureBox譜面パネル.Refresh();\r
325                         }\r
326                 }\r
327                 private void tドラッグ範囲中のチップを選択する()\r
328                 {\r
329                         Rectangle rectangle = new Rectangle();\r
330                         rectangle.X = Math.Min( this.pt現在のドラッグ開始位置dot.X, this.pt現在のドラッグ終了位置dot.X );\r
331                         rectangle.Y = Math.Min( this.pt現在のドラッグ開始位置dot.Y, this.pt現在のドラッグ終了位置dot.Y );\r
332                         rectangle.Width = Math.Abs( (int) ( this.pt現在のドラッグ開始位置dot.X - this.pt現在のドラッグ終了位置dot.X ) );\r
333                         rectangle.Height = Math.Abs( (int) ( this.pt現在のドラッグ開始位置dot.Y - this.pt現在のドラッグ終了位置dot.Y ) );\r
334                         Rectangle rectangle2 = new Rectangle();\r
335                         rectangle2.X = this.mgr譜面管理者ref.nX座標dotが位置するレーン番号を返す( rectangle.X );\r
336                         rectangle2.Y = this.mgr譜面管理者ref.nY座標dotが位置するgridを返す・最高解像度( rectangle.Y );\r
337                         rectangle2.Width = this.mgr譜面管理者ref.nX座標dotが位置するレーン番号を返す( rectangle.Right ) - rectangle2.X;\r
338                         rectangle2.Height = this.mgr譜面管理者ref.nY座標dotが位置するgridを返す・最高解像度( rectangle.Bottom ) - rectangle2.Y;\r
339                         int num = 0;\r
340                         for( int i = 0; i < this.mgr譜面管理者ref.dic小節.Count; i++ )\r
341                         {\r
342                                 C小節 c小節 = this.mgr譜面管理者ref.dic小節[ i ];\r
343                                 int num3 = c小節.n小節長倍率を考慮した現在の小節の高さgrid;\r
344                                 for( int j = 0; j < c小節.listチップ.Count; j++ )\r
345                                 {\r
346                                         int num5;\r
347                                         Cチップ cc = c小節.listチップ[ j ];\r
348                                         if( this.mgr譜面管理者ref.bOPENチップである( cc ) )\r
349                                         {\r
350                                                 if( ( ( cc.nレーン番号0to + 2 ) >= rectangle2.X ) && ( rectangle2.Right >= cc.nレーン番号0to ) )\r
351                                                 {\r
352                                                         goto Label_01B0;\r
353                                                 }\r
354                                                 cc.bドラッグで選択中 = false;\r
355                                                 continue;\r
356                                         }\r
357                                         if( ( cc.nレーン番号0to < rectangle2.X ) || ( rectangle2.Right < cc.nレーン番号0to ) )\r
358                                         {\r
359                                                 cc.bドラッグで選択中 = false;\r
360                                                 continue;\r
361                                         }\r
362                                 Label_01B0:\r
363                                         num5 = num + cc.n位置grid;\r
364                                         int num6 = num5 + C小節.n位置変換dot2grid( Cチップ.nチップの高さdot );\r
365                                         if( ( num6 < rectangle2.Bottom ) || ( rectangle2.Top < num5 ) )\r
366                                         {\r
367                                                 cc.bドラッグで選択中 = false;\r
368                                         }\r
369                                         else\r
370                                         {\r
371                                                 cc.bドラッグで選択中 = true;\r
372                                         }\r
373                                 }\r
374                                 num += num3;\r
375                         }\r
376                 }\r
377                 private void t移動開始処理( MouseEventArgs e )\r
378                 {\r
379                         this.b移動のためにドラッグ中 = true;\r
380                         this.pt現在のドラッグ開始位置dot.X = this.pt現在のドラッグ終了位置dot.X = e.X;\r
381                         this.pt現在のドラッグ開始位置dot.Y = this.pt現在のドラッグ終了位置dot.Y = e.Y;\r
382                         this.pt前回の位置LaneGrid.X = this.mgr譜面管理者ref.nX座標dotが位置するレーン番号を返す( e.X );\r
383                         this.pt前回の位置LaneGrid.Y = this.mgr譜面管理者ref.nY座標dotが位置するgridを返す・ガイド幅単位( e.Y );\r
384                         foreach( KeyValuePair<int, C小節> pair in this._Form.mgr譜面管理者.dic小節 )\r
385                         {\r
386                                 C小節 c小節 = pair.Value;\r
387                                 for( int i = 0; i < c小節.listチップ.Count; i++ )\r
388                                 {\r
389                                         Cチップ cチップ = c小節.listチップ[ i ];\r
390                                         if( cチップ.b確定選択中 )\r
391                                         {\r
392                                                 cチップ.n移動開始時の小節番号0to = c小節.n小節番号0to3599;\r
393                                                 cチップ.n移動開始時のレーン番号0to = cチップ.nレーン番号0to;\r
394                                                 cチップ.n移動開始時の小節内の位置grid = cチップ.n位置grid;\r
395                                         }\r
396                                 }\r
397                         }\r
398                 }\r
399                 private void t移動継続処理( MouseEventArgs e )\r
400                 {\r
401                         this.pt現在のドラッグ終了位置dot.X = e.X;\r
402                         this.pt現在のドラッグ終了位置dot.Y = e.Y;\r
403                         this.t画面上下にマウスカーソルがあるなら譜面を縦スクロールする( e );\r
404                         this.t確定選択中のチップを移動する();\r
405                 }\r
406                 private void t移動終了処理( MouseEventArgs e )\r
407                 {\r
408                         this.b移動のためにドラッグ中 = false;\r
409                         foreach( KeyValuePair<int, C小節> pair in this.mgr譜面管理者ref.dic小節 )\r
410                         {\r
411                                 for( int i = 0; i < pair.Value.listチップ.Count; i++ )\r
412                                 {\r
413                                         Cチップ cチップ = pair.Value.listチップ[ i ];\r
414                                         if( cチップ.b確定選択中 && ( cチップ.n枠外レーン数 == 0 ) )\r
415                                         {\r
416                                                 Cレーン cレーン = this.mgr譜面管理者ref.listレーン[ cチップ.nレーン番号0to ];\r
417                                                 cチップ.nチャンネル番号00toFF = cチップ.b裏 ? cレーン.nチャンネル番号・裏00toFF : cレーン.nチャンネル番号・表00toFF;\r
418                                                 if( ( cレーン.bパターンレーンである() && ( cチップ.n値・整数1to1295 != 1 ) ) && ( cチップ.n値・整数1to1295 != 2 ) )\r
419                                                 {\r
420                                                         cチップ.n値・整数1to1295 = 1;\r
421                                                 }\r
422                                         }\r
423                                 }\r
424                         }\r
425                         this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
426                         foreach( KeyValuePair<int, C小節> pair2 in this.mgr譜面管理者ref.dic小節 )\r
427                         {\r
428                                 C小節 c小節 = pair2.Value;\r
429                                 for( int j = 0; j < pair2.Value.listチップ.Count; j++ )\r
430                                 {\r
431                                         Cチップ cチップ2 = c小節.listチップ[ j ];\r
432                                         if( cチップ2.b確定選択中 && ( ( ( cチップ2.n移動開始時の小節番号0to != c小節.n小節番号0to3599 ) || ( cチップ2.n移動開始時のレーン番号0to != cチップ2.nレーン番号0to ) ) || ( cチップ2.n移動開始時の小節内の位置grid != cチップ2.n位置grid ) ) )\r
433                                         {\r
434                                                 Cチップ位置用UndoRedo redo = new Cチップ位置用UndoRedo( cチップ2.n移動開始時の小節番号0to, cチップ2.n移動開始時のレーン番号0to, cチップ2.n移動開始時の小節内の位置grid, cチップ2.n値・整数1to1295 );\r
435                                                 Cチップ位置用UndoRedo redo2 = new Cチップ位置用UndoRedo( c小節.n小節番号0to3599, cチップ2.nレーン番号0to, cチップ2.n位置grid, cチップ2.n値・整数1to1295 );\r
436                                                 this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.tチップ移動のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.tチップ移動のRedo ), redo, redo2 ) );\r
437                                         }\r
438                                 }\r
439                         }\r
440                         this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
441                         this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
442                 }\r
443                 private void t画面上下にマウスカーソルがあるなら譜面を縦スクロールする( MouseEventArgs e )\r
444                 {\r
445                         if( e.Y < 70 )\r
446                         {\r
447                                 int nGrid = -( 70 - e.Y ) / 2;\r
448                                 int num2 = this._Form.vScrollBar譜面用垂直スクロールバー.Value;\r
449                                 int num3 = this._Form.vScrollBar譜面用垂直スクロールバー.Value + nGrid;\r
450                                 int minimum = this._Form.vScrollBar譜面用垂直スクロールバー.Minimum;\r
451                                 int num5 = ( this._Form.vScrollBar譜面用垂直スクロールバー.Maximum + 1 ) - this._Form.vScrollBar譜面用垂直スクロールバー.LargeChange;\r
452                                 if( num3 < minimum )\r
453                                 {\r
454                                         num3 = minimum;\r
455                                 }\r
456                                 else if( num3 > num5 )\r
457                                 {\r
458                                         num3 = num5;\r
459                                 }\r
460                                 this._Form.vScrollBar譜面用垂直スクロールバー.Value = num3;\r
461                                 nGrid = num3 - num2;\r
462                                 this.pt現在のドラッグ開始位置dot.Y -= C小節.n位置変換grid2dot( nGrid );\r
463                         }\r
464                         else if( e.Y > ( this._Form.pictureBox譜面パネル.Height - 50 ) )\r
465                         {\r
466                                 int num6 = ( ( e.Y - this._Form.pictureBox譜面パネル.Height ) + 50 ) / 2;\r
467                                 int num7 = this._Form.vScrollBar譜面用垂直スクロールバー.Value;\r
468                                 int num8 = this._Form.vScrollBar譜面用垂直スクロールバー.Value + num6;\r
469                                 int num9 = this._Form.vScrollBar譜面用垂直スクロールバー.Minimum;\r
470                                 int num10 = ( this._Form.vScrollBar譜面用垂直スクロールバー.Maximum + 1 ) - this._Form.vScrollBar譜面用垂直スクロールバー.LargeChange;\r
471                                 if( num8 < num9 )\r
472                                 {\r
473                                         num8 = num9;\r
474                                 }\r
475                                 else if( num8 > num10 )\r
476                                 {\r
477                                         num8 = num10;\r
478                                 }\r
479                                 this._Form.vScrollBar譜面用垂直スクロールバー.Value = num8;\r
480                                 num6 = num8 - num7;\r
481                                 this.pt現在のドラッグ開始位置dot.Y -= C小節.n位置変換grid2dot( num6 );\r
482                         }\r
483                 }\r
484                 private void t確定選択中のチップを移動する()\r
485                 {\r
486                         Point point = new Point();\r
487                         point.X = this.mgr譜面管理者ref.nX座標dotが位置するレーン番号を返す( this.pt現在のドラッグ終了位置dot.X );\r
488                         point.Y = this.mgr譜面管理者ref.nY座標dotが位置するgridを返す・ガイド幅単位( this.pt現在のドラッグ終了位置dot.Y );\r
489                         Point point2 = new Point();\r
490                         point2.X = point.X - this.pt前回の位置LaneGrid.X;\r
491                         point2.Y = point.Y - this.pt前回の位置LaneGrid.Y;\r
492                         if( ( point2.X != 0 ) || ( point2.Y != 0 ) )\r
493                         {\r
494                                 foreach( KeyValuePair<int, C小節> pair in this.mgr譜面管理者ref.dic小節 )\r
495                                 {\r
496                                         pair.Value.t小節内の全チップの移動済フラグをリセットする();\r
497                                 }\r
498                                 for( int i = 0; i < this.mgr譜面管理者ref.dic小節.Count; i++ )\r
499                                 {\r
500                                         C小節 c小節 = this.mgr譜面管理者ref.dic小節[ i ];\r
501                                         for( int j = 0; j < c小節.listチップ.Count; j++ )\r
502                                         {\r
503                                                 Cチップ cc = c小節.listチップ[ j ];\r
504                                                 if( cc.b確定選択中 && !cc.b移動済 )\r
505                                                 {\r
506                                                         if( point2.X != 0 )\r
507                                                         {\r
508                                                                 this.tチップを横に移動する( cc, point2.X );\r
509                                                         }\r
510                                                         if( point2.Y != 0 )\r
511                                                         {\r
512                                                                 this.tチップを縦に移動する( cc, point2.Y, c小節 );\r
513                                                                 i = -1;\r
514                                                                 break;\r
515                                                         }\r
516                                                 }\r
517                                         }\r
518                                 }\r
519                                 this.pt前回の位置LaneGrid.X = point.X;\r
520                                 this.pt前回の位置LaneGrid.Y = point.Y;\r
521                         }\r
522                 }\r
523                 private void t検索する・メイン()\r
524                 {\r
525                         C検索ダイアログ c検索ダイアログ = new C検索ダイアログ();\r
526                         if( !c検索ダイアログ.bレーンリストの内訳が生成済みである )\r
527                         {\r
528                                 int count = this._Form.mgr譜面管理者.listレーン.Count;\r
529                                 string[] strArray = new string[ count ];\r
530                                 for( int i = 0; i < count; i++ )\r
531                                 {\r
532                                         strArray[ i ] = this._Form.mgr譜面管理者.listレーン[ i ].strレーン名;\r
533                                 }\r
534                                 c検索ダイアログ.tレーンリストの内訳を生成する( strArray );\r
535                         }\r
536                         if( c検索ダイアログ.ShowDialog() == DialogResult.OK )\r
537                         {\r
538                                 int num3 = c検索ダイアログ.bチップ範囲指定CheckBoxがチェックされている ? c検索ダイアログ.nチップ範囲開始番号 : 0;\r
539                                 int num4 = c検索ダイアログ.bチップ範囲指定CheckBoxがチェックされている ? c検索ダイアログ.nチップ範囲終了番号 : 0x50f;\r
540                                 if( ( c検索ダイアログ.bチップ範囲指定CheckBoxがチェックされている && ( num3 < 0 ) ) && ( num4 < 0 ) )\r
541                                 {\r
542                                         num3 = 0;\r
543                                         num4 = 0x50f;\r
544                                 }\r
545                                 int num5 = c検索ダイアログ.b小節範囲指定CheckBoxがチェックされている ? c検索ダイアログ.n小節範囲開始番号 : 0;\r
546                                 int num6 = c検索ダイアログ.b小節範囲指定CheckBoxがチェックされている ? c検索ダイアログ.n小節範囲終了番号 : this._Form.mgr譜面管理者.n現在の最大の小節番号を返す();\r
547                                 if( ( c検索ダイアログ.b小節範囲指定CheckBoxがチェックされている && ( num5 < 0 ) ) && ( num6 < 0 ) )\r
548                                 {\r
549                                         num5 = 0;\r
550                                         num6 = this._Form.mgr譜面管理者.n現在の最大の小節番号を返す();\r
551                                 }\r
552                                 if( ( ( num5 >= 0 ) && ( num6 >= 0 ) ) && ( ( num3 >= 0 ) && ( num4 >= 0 ) ) )\r
553                                 {\r
554                                         this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
555                                         int num7 = 0;\r
556                                         for( int j = num5; j <= num6; j++ )\r
557                                         {\r
558                                                 C小節 c小節 = this._Form.mgr譜面管理者.p小節を返す( j );\r
559                                                 if( c小節 != null )\r
560                                                 {\r
561                                                         for( int k = 0; k < c小節.listチップ.Count; k++ )\r
562                                                         {\r
563                                                                 Cチップ cチップ = c小節.listチップ[ k ];\r
564                                                                 if( ( ( !c検索ダイアログ.bレーン指定CheckBoxがチェックされている || c検索ダイアログ.bレーンが検索対象である( cチップ.nレーン番号0to ) ) && ( ( cチップ.n値・整数1to1295 >= num3 ) && ( cチップ.n値・整数1to1295 <= num4 ) ) ) && ( ( c検索ダイアログ.b表チップCheckBoxがチェックされている && !cチップ.b裏 ) || ( c検索ダイアログ.b裏チップCheckBoxがチェックされている && cチップ.b裏 ) ) )\r
565                                                                 {\r
566                                                                         Cチップ位置用UndoRedo redo = new Cチップ位置用UndoRedo( c小節.n小節番号0to3599, cチップ.nレーン番号0to, cチップ.n位置grid, cチップ.n値・整数1to1295 );\r
567                                                                         this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択のRedo ), redo, redo ) );\r
568                                                                         cチップ.b確定選択中 = true;\r
569                                                                         num7++;\r
570                                                                 }\r
571                                                         }\r
572                                                 }\r
573                                         }\r
574                                         this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
575                                         this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
576                                         this._Form.pictureBox譜面パネル.Refresh();\r
577                                         if( num7 > 0 )\r
578                                         {\r
579                                                 this._Form.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();\r
580                                                 MessageBox.Show( num7 + Resources.str個のチップが選択されましたMSG, Resources.str検索結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1 );\r
581                                         }\r
582                                         else\r
583                                         {\r
584                                                 MessageBox.Show( Resources.str該当するチップはありませんでしたMSG, Resources.str検索結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1 );\r
585                                         }\r
586                                 }\r
587                         }\r
588                 }\r
589                 private void t現在の選択範囲を描画する( Graphics g )\r
590                 {\r
591                         Rectangle rect = new Rectangle();\r
592                         rect.X = Math.Min( this.pt現在のドラッグ開始位置dot.X, this.pt現在のドラッグ終了位置dot.X );\r
593                         rect.Y = Math.Min( this.pt現在のドラッグ開始位置dot.Y, this.pt現在のドラッグ終了位置dot.Y );\r
594                         rect.Width = Math.Abs( (int) ( this.pt現在のドラッグ開始位置dot.X - this.pt現在のドラッグ終了位置dot.X ) );\r
595                         rect.Height = Math.Abs( (int) ( this.pt現在のドラッグ開始位置dot.Y - this.pt現在のドラッグ終了位置dot.Y ) );\r
596                         if( rect.Width < 0 )\r
597                         {\r
598                                 rect.X = this.pt現在のドラッグ開始位置dot.X;\r
599                                 rect.Width = this.pt現在のドラッグ開始位置dot.X - rect.X;\r
600                         }\r
601                         if( rect.Height < 0 )\r
602                         {\r
603                                 rect.Y = this.pt現在のドラッグ開始位置dot.Y;\r
604                                 rect.Height = this.pt現在のドラッグ開始位置dot.Y - rect.Y;\r
605                         }\r
606                         if( ( rect.Width != 0 ) && ( rect.Height != 0 ) )\r
607                         {\r
608                                 g.FillRectangle( this.br選択領域ブラシ, rect );\r
609                                 g.DrawRectangle( Pens.LightBlue, rect );\r
610                         }\r
611                 }\r
612                 private void t選択チップを単純置換する( int n元番号, int n先番号 )\r
613                 {\r
614                         if( ( n元番号 < 0 ) || ( n先番号 < 0 ) )\r
615                         {\r
616                                 MessageBox.Show( Resources.strチップ番号に誤りがありますMSG, Resources.str置換結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1 );\r
617                         }\r
618                         else\r
619                         {\r
620                                 int num = 0;\r
621                                 this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
622                                 foreach( KeyValuePair<int, C小節> pair in this._Form.mgr譜面管理者.dic小節 )\r
623                                 {\r
624                                         C小節 c小節 = pair.Value;\r
625                                         for( int i = 0; i < c小節.listチップ.Count; i++ )\r
626                                         {\r
627                                                 Cチップ cチップ = c小節.listチップ[ i ];\r
628                                                 if( cチップ.b確定選択中 && ( cチップ.n値・整数1to1295 == n元番号 ) )\r
629                                                 {\r
630                                                         Cチップ位置用UndoRedo redo = new Cチップ位置用UndoRedo( c小節.n小節番号0to3599, cチップ.nレーン番号0to, cチップ.n位置grid, cチップ.n値・整数1to1295 );\r
631                                                         Cチップ位置用UndoRedo redo2 = new Cチップ位置用UndoRedo( c小節.n小節番号0to3599, cチップ.nレーン番号0to, cチップ.n位置grid, n先番号 );\r
632                                                         this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ番号置換のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ番号置換のRedo ), redo, redo2 ) );\r
633                                                         cチップ.n値・整数1to1295 = n先番号;\r
634                                                         num++;\r
635                                                 }\r
636                                         }\r
637                                 }\r
638                                 this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
639                                 this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
640                                 if( num > 0 )\r
641                                 {\r
642                                         this._Form.b未保存 = true;\r
643                                         this._Form.pictureBox譜面パネル.Refresh();\r
644                                         MessageBox.Show( num + Resources.str個のチップを置換しましたMSG, Resources.str置換結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1 );\r
645                                 }\r
646                                 else\r
647                                 {\r
648                                         MessageBox.Show( Resources.str該当するチップはありませんでしたMSG, Resources.str置換結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1 );\r
649                                 }\r
650                         }\r
651                 }\r
652                 private void t選択チップを表裏反転置換する()\r
653                 {\r
654                         int num = 0;\r
655                         this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
656                         foreach( KeyValuePair<int, C小節> pair in this._Form.mgr譜面管理者.dic小節 )\r
657                         {\r
658                                 C小節 c小節 = pair.Value;\r
659                                 for( int i = 0; i < c小節.listチップ.Count; i++ )\r
660                                 {\r
661                                         Cチップ cチップ = c小節.listチップ[ i ];\r
662                                         if( cチップ.b確定選択中 )\r
663                                         {\r
664                                                 Cチップ位置用UndoRedo redo = new Cチップ位置用UndoRedo( c小節.n小節番号0to3599, cチップ.nレーン番号0to, cチップ.n位置grid, cチップ.n値・整数1to1295 );\r
665                                                 this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ表裏反転のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ表裏反転のRedo ), redo, redo ) );\r
666                                                 if( cチップ.b裏 )\r
667                                                 {\r
668                                                         cチップ.nチャンネル番号00toFF = this._Form.mgr譜面管理者.listレーン[ cチップ.nレーン番号0to ].nチャンネル番号・表00toFF;\r
669                                                         cチップ.b裏 = false;\r
670                                                 }\r
671                                                 else\r
672                                                 {\r
673                                                         cチップ.nチャンネル番号00toFF = this._Form.mgr譜面管理者.listレーン[ cチップ.nレーン番号0to ].nチャンネル番号・裏00toFF;\r
674                                                         cチップ.b裏 = true;\r
675                                                 }\r
676                                                 num++;\r
677                                         }\r
678                                 }\r
679                         }\r
680                         this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
681                         this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
682                         if( num > 0 )\r
683                         {\r
684                                 this._Form.b未保存 = true;\r
685                                 this._Form.pictureBox譜面パネル.Refresh();\r
686                                 MessageBox.Show( num + Resources.str個のチップを置換しましたMSG, Resources.str置換結果ダイアログのタイトル, MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1 );\r
687                         }\r
688                 }\r
689                 private void t置換する・メイン()\r
690                 {\r
691                         C置換ダイアログ c置換ダイアログ = new C置換ダイアログ();\r
692                         bool flag = false;\r
693                         if( !this._Form.mgr譜面管理者.b確定選択中のチップがある() )\r
694                         {\r
695                                 this.t全チップを選択する();\r
696                                 flag = true;\r
697                         }\r
698                         int num = -1;\r
699                         bool flag2 = true;\r
700                         foreach( KeyValuePair<int, C小節> pair in this._Form.mgr譜面管理者.dic小節 )\r
701                         {\r
702                                 foreach( Cチップ cチップ in pair.Value.listチップ )\r
703                                 {\r
704                                         if( cチップ.b確定選択中 )\r
705                                         {\r
706                                                 if( num < 0 )\r
707                                                 {\r
708                                                         num = cチップ.n値・整数1to1295;\r
709                                                 }\r
710                                                 else if( num != cチップ.n値・整数1to1295 )\r
711                                                 {\r
712                                                         flag2 = false;\r
713                                                         break;\r
714                                                 }\r
715                                         }\r
716                                 }\r
717                                 if( !flag2 )\r
718                                 {\r
719                                         break;\r
720                                 }\r
721                         }\r
722                         if( flag2 )\r
723                         {\r
724                                 c置換ダイアログ.n元番号 = num;\r
725                         }\r
726                         if( c置換ダイアログ.ShowDialog() == DialogResult.OK )\r
727                         {\r
728                                 if( c置換ダイアログ.b表裏反転RadioButtonがチェックされている )\r
729                                 {\r
730                                         this.t選択チップを表裏反転置換する();\r
731                                 }\r
732                                 else if( c置換ダイアログ.b単純置換RadioButtonがチェックされている )\r
733                                 {\r
734                                         this.t選択チップを単純置換する( c置換ダイアログ.n元番号, c置換ダイアログ.n先番号 );\r
735                                 }\r
736                         }\r
737                         else if( flag )\r
738                         {\r
739                                 this.t全チップの選択を解除する();\r
740                         }\r
741                 }\r
742                 private void t範囲選択開始処理( MouseEventArgs e )\r
743                 {\r
744                         this.b範囲選択のためにドラッグ中 = true;\r
745                         this.pt現在のドラッグ開始位置dot.X = this.pt現在のドラッグ終了位置dot.X = e.X;\r
746                         this.pt現在のドラッグ開始位置dot.Y = this.pt現在のドラッグ終了位置dot.Y = e.Y;\r
747                         if( ( Control.ModifierKeys & Keys.Control ) != Keys.Control )\r
748                         {\r
749                                 this.t全チップの選択を解除する();\r
750                         }\r
751                         this.tドラッグ範囲中のチップを選択する();\r
752                 }\r
753                 private void t範囲選択継続処理( MouseEventArgs e )\r
754                 {\r
755                         this.pt現在のドラッグ終了位置dot.X = e.X;\r
756                         this.pt現在のドラッグ終了位置dot.Y = e.Y;\r
757                         this.t画面上下にマウスカーソルがあるなら譜面を縦スクロールする( e );\r
758                         this.tドラッグ範囲中のチップを選択する();\r
759                 }\r
760                 private void t範囲選択終了処理( MouseEventArgs e )\r
761                 {\r
762                         this.b範囲選択のためにドラッグ中 = false;\r
763                         this._Form.mgrUndoRedo管理者.tトランザクション記録を開始する();\r
764                         foreach( KeyValuePair<int, C小節> pair in this.mgr譜面管理者ref.dic小節 )\r
765                         {\r
766                                 C小節 c小節 = pair.Value;\r
767                                 for( int i = 0; i < c小節.listチップ.Count; i++ )\r
768                                 {\r
769                                         Cチップ cチップ = c小節.listチップ[ i ];\r
770                                         if( cチップ.bドラッグで選択中 && !cチップ.b確定選択中 )\r
771                                         {\r
772                                                 Cチップ位置用UndoRedo redo = new Cチップ位置用UndoRedo( c小節.n小節番号0to3599, cチップ.nレーン番号0to, cチップ.n位置grid, cチップ.n値・整数1to1295 );\r
773                                                 this._Form.mgrUndoRedo管理者.tノードを追加する( new CUndoRedoセル<Cチップ位置用UndoRedo>( null, new DGUndoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択のUndo ), new DGRedoを実行する<Cチップ位置用UndoRedo>( this.mgr譜面管理者ref.tチップ選択のRedo ), redo, redo ) );\r
774                                         }\r
775                                 }\r
776                         }\r
777                         this._Form.mgrUndoRedo管理者.tトランザクション記録を終了する();\r
778                         this._Form.tUndoRedo用GUIの有効・無効を設定する();\r
779                         foreach( KeyValuePair<int, C小節> pair2 in this.mgr譜面管理者ref.dic小節 )\r
780                         {\r
781                                 C小節 c小節2 = pair2.Value;\r
782                                 for( int j = 0; j < c小節2.listチップ.Count; j++ )\r
783                                 {\r
784                                         Cチップ cチップ2 = c小節2.listチップ[ j ];\r
785                                         if( cチップ2.bドラッグで選択中 )\r
786                                         {\r
787                                                 cチップ2.bドラッグで選択中 = false;\r
788                                                 cチップ2.b確定選択中 = true;\r
789                                         }\r
790                                 }\r
791                         }\r
792                         this._Form.t選択チップの有無に応じて編集用GUIの有効・無効を設定する();\r
793                 }\r
794                 //-----------------\r
795                 #endregion\r
796         }\r
797 }\r