[C#]フォームを最前面・最背面に移動させる

ウィンドウを最背面にしたい場合はFormが持っているプロパティのTopMostプロパティをtrueにします。
但し、TopMostにしてしまうと常に最前面のままになってしまうため、直ぐにfalseに戻してあげれば、一時的に最前面に移動させる事ができます

 
private void Button1_Click(object sender, EventArgs e) {
    this.TopMost = true;
    this.TopMost = false;
}





逆に、ウィンドウを最背面にしたい場合は、Win32APIを使用します。
Program Managerのという特別なウィンドウの子ウィンドウとして自分をセットする事で、最背面に表示させます。

[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
 
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
 
private void Button1_Click(object sender, EventArgs e) {
    IntPtr WinHandle = FindWindow(null, "Program Manager");
    if ( WinHandle != null ) {
        SetParent( this.Handle, WinHandle );
    }
}



究極のC#プログラミング ~新スタイルによる実践的コーディング

[C#]DataSet.xsdを作成すると、自動でデータセットクラスが生成される。

以前に、CrystalReportsで自作DataSetを元に帳票を印刷する方法を説明しましたが、説明の中に無駄な作業工程がありました。
 参考記事:CrystalReportsで自作DataSetを元に帳票を印刷する



どこに無駄があるかというと、下記のイベントハンドラ処理です。

private void button1_Click( object sender, EventArgs e ) {
    // レコード定義を行う
    DataTable table = new DataTable();
    table.Columns.Add("id",    Type.GetType("System.String"));
    table.Columns.Add("name",  Type.GetType("System.String"));
    table.Columns.Add("price", Type.GetType("System.Int32"));
 
    // 印字データを追加
    DataRow row;
    row = table.NewRow();
    row["id"]    = "iten_no1";
    row["name"]  = "りんご";
    row["price"] = 200;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no2";
    row["name"]  = "みかん";
    row["price"] = 220;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no3";
    row["name"]  = "ばなな";
    row["price"] = 40;
    table.Rows.Add(row);
 
    // 印字データをセット
    crystalReport1.SetDataSource( table );
    crystalReport1.Refresh();
 
    // プリンタに印刷
    crystalReport1.PrintToPrinter( 0, false, 0, 0 );
}



上記の説明ではColumns.Add()メソッドでデータセットの列定義を行っていますが、DataSet1.xsdファイルでデータセットの定義を行っているので、列定義の処理は不要でした。
xsdファイルの編集で行った成果物としてVisualStudioがRepTestTableDataTableクラスを自動生成してくれる為、このクラスのインスタンスを生成するだけでOKでした…
自動生成されるクラス名は、「xsdファイルで指定したテーブル名+”DataTable”」になります。

というわけで、以下のコードでデータセットにレコードを追加する事が可能です。

RepTestTableDataTable table = new RepTestTableDataTable();
 
// 印字データを追加
DataRow row;
row = table.NewRow();
row["id"]    = "iten_no1";
row["name"]  = "りんご";
row["price"] = 200;
table.Rows.Add(row);

カブのチェーンを張り直す

ブレーキを掛けて減速するときに、チェーンケースにチェーンが当たって”カラカラ”と音が鳴るようになってしまったので、チェーンの張り具合を調整してみました。
チェーンがどの程度伸びているかは、チェーンケースの中央下辺りにある穴から覗いて、確認する事ができます。覗き穴はゴムの蓋で覆って有りますが、引っ張れば簡単に取れます。

手順

まず、ギアをニュートラルにします。
調整中に万一エンジンが掛かってしまうと大怪我をしてしまうので、キーは外して手元に置いてください。


最初に、チェーンを覆っているチェーンケースを外します。

ケースにある4つのねじを外します。
ねじはそれ程きつく無いので簡単に外せるかと思います。


ケースを外した状態です。チェーンがむき出しになりました。
ケース下側の中央にある黒い丸のゴムが、チェーンの覗き穴です。




チェーンケースを外したら次は、後輪を止めているナットを緩めます。
こちらはかなり固いので、ナットの頭をなめない様に注意しつつ、気合を入れて緩めます。
ちょっと緩めると、タイヤの反対側にあるナットも回ってしまうので、もう一本スパナを用意して反対側は回らないようにしながら緩めていきます。タイヤを外すわけではないので、ナットと本体の間に少し隙間ができれば十分です。



ここまでできたらチェーンの張りを微調整します。
写真の1のナットを緩めた後、2のナットを少し締めてチェーンを張ります。


反対側も同じ構造になっているので、同じだけ締めます。


ここでのポイントは、この時点の微調整でちょうど良い張りにするのではなく、ちょっと緩めに調整しておく事です。この後、後輪を止めているナットを締めるとチェーンの張りが強くなってしまうので、その分を考慮しておく必要があります。

張りを調整したらタイヤが進行方向に対して真っ直ぐになっているか、入念にチェックします。
また、タイヤを手で回してみて違和感が無いかも確認します。


調整ができたら、外したときの逆順で、ナットを締めて行きます。
後輪を止めているナットは特に気をつけて、キツく締めておいてください。

全てのナットを締め終わったら、再度チェーンの張りをチェックします。15~25mm程度の遊びがあればOKです。ここでチェーンが張りすぎになっていたら、再度調整しなおします。
万が一、張りすぎたままにしておくと、チェーンの寿命が縮まったり、最悪の場合は高速走行中にチェーンが切れてしまう危険もあるので、億劫でも十分に確認をしてください。


4883932915
ホンダスーパーカブメンテナンス―オールカラー

カブのオイル交換を自分で行う

新しく買ったカブの走行距離が1000kmを超えたので、オイル交換をしてみました。



オイル交換のタイミング

メーカーによると、以下のタイミングでオイル交換を行うことを推奨しています。
指定された距離に達していなくても期間とともにオイルは劣化して行くので、距離・期間のいずれか短い方が達したタイミングで交換を行います。

初回:
  1ヶ月又は、1000km経過後

2回目以降:
  6ヶ月又は、3000km経過後


オイル交換の費用

バイク屋で交換を依頼する事もできますが、2000円程度費用が掛かります。
自分で交換すれば、オイル代だけ(ホームセンターやカーショップで980円程度)で済むのでお徳です。
自分の持っているバイクのメンテを自身で行う事でバイクへの愛着がわくというメリットもあるかも。

オイルはアマゾンでも購入できます。
B0025R3V4S
ホンダ:ウルトラG1オイル/10W-30 / 1L

また、廃油は下記のような廃油処理箱を買うと便利ですが、古新聞紙に吸わせて処理する事もできます。
B005QUPM5C
SUMICO スミコーオイルパック 2L用 廃油処理箱 品番:770500


オイル交換の方法


オイル交換の前に、まず5分ほど走るorアイドリングの状態にしておき、オイルを暖めて置きます。
エンジンを動かしすぎるとオイルが熱くなりすぎ、やけどしてしまう可能性もあるので注意してください。エンジンを触ったときに暖かい程度になっていればOKかと思います。

カブの場合は、エンジンの所に必要なオイルの量が記載されています。交換時は0.8Lか0.6Lかと思いますが、オイルは最小で1Lのものしか売ってないので1Lのものを買ってきます。
オイルを入れる場所は、オイル量が記載されているところの横にあるキャップです。


キャップは、手で簡単に開けることができます。


先っぽを見ると、オイルの量を確認するためのゲージが有ります。


このキャップを少し緩めた状態にしておきます。

次に、エンジンオイルを抜きます。
オイルは、エンジン下側にある、真下を向いたボルト(ドレンボルト)をはずします。
斜めを向いたボルトが奥のほうにもうひとつありますが、こちらは外してはいけません。


ドレンボルトのサイズは17です。




ボルトを外すと、オイルが出てくるのでこぼれないように廃油受けを用意して置きます。
市販の廃油処理箱を購入していればそれを下に置きます。

今回は、1.5Lのペットボトルで代用しました。
先っちょを切り取りって反対向きに差込み、斜めに置いてオイルを受けます。


先っちょを逆向きに差し込んでいるのは、万が一外したボルトを落としてしまったときに、ここに引っかかるようにする為の保険です。



廃油を受け損なったときのために、ボルトの真下にビニールや新聞紙などを置いておくと地面が汚れなくって良いです。
少しこぼしてしまいましたが、それ程オイルのヨゴレは無さそうな感じでした。

出てきた廃油は新聞紙に吸わせて燃えるゴミに出しますが、市町村によっては廃油をゴミに出すのを禁止している場合も有ります。その場合はガソリンスタンドやカーショップに廃油を持っていって引取りを依頼します。

オイルを全部出し切った状態です。
0.8L出てくるはずなので、1.5Lのペットボトル半分強になります。
ここからキックペダルを数回踏み込むと、もう少しオイルが出てきます。


外したボルトです。
ボルトについていたワッシャー(パッキン)は失くさない用に注意してください。
パッキン無しでボルトだけ締めても、隙間からオイルが漏れてしまいます。



完全にオイルを排出できたら、ボルト+パッキンを再度締めます。


その後、最初に緩めたエンジン上部の口より新しいオイルを入れます。
通常オイルを買えば注油用の短いホースを無償でもらえるはずなののですが、今回貰い損ねてしまったので、手元にあったクリアファイルを加工して漏斗代わりにしました。


こんな感じで規定量(今回は0.8L分)入れていきます。
入れすぎると元に戻せないので、ある程度入れたらちょっとづつ入れながら、規定量入ったかを確認して行きます。
キッチンスケールを持っている場合は、重さで確認するのも便利です。




適正量は、キャップ先のオイルをふき取った後、キャップを締めて再度取り出すと分かります。
キャップの先っちょにゲージ(少し細くなった部分)があるので、範囲内に収まるようにします。
上限ぎりぎりを狙えばOKです。


オイル交換が終わったら動作確認です。
念のため5分ほど走ってみて、異音がしないか、加速に問題がないかなどを確認しておきます。
また、走り終わったらエンジンカブのドレンボルトを確認し、オイル漏れがない事をチェックします。




カブのメンテが初めてで慣れない場合は、カブのメンテナンス本を用意しておくと便利です。
下記の本は、純正のサービスマニュアルよりも安価で、しかも写真も多くて分かりやすいのでお勧めです。
4883932915
ホンダスーパーカブメンテナンス―オールカラー

[C#,VS2010]CrystalReportsで帳票レイアウト側にパラメータを渡す

CrystalReportsではDataSetを使用して帳票に印字するデータを渡します。通常はこれで問題ないのですが、印字する帳票によってはDataSetに依存しないプログラム指定のパラメータ値を帳票に渡したい場合もあります。

このような場合CrystalReportsには「パラメータフィールド」というものを使用して、データを渡す事が可能です。パラメータフィールドは通常、特定のデータのみを印字する等のデータ絞込み用の式パラメータや、データセットに依存しない印字データ(ヘッダ印字項目等)で使用されます。


それでは、パラメータフィールドを使用した帳票作成の手順を確認して行きましょう。


rptファイルを画面に表示させた状態で、メニューバーから「CrystalReports->フィールドエクスプローラー」を選択します。


フィールドパラメータを右クリックし、新規を選択します。



パラメータの名前を指定し、OKボタンをクリックします。



パラメータフィールドの下に、作成したパラメータが表示されます。
帳票上にこのパラメータを印字したい場合は、ドラッグしてレイアウトに貼り付けます。





また、もしパラメータを印字データの絞込みで使いたい場合は、レイアウトを右クリックし、レポート->選択式を選択します。


その後、式ワークショップウィンドウで絞り込み条件を指定できます。
下記の例では注文IDが指定されたパラメータと一致するデータのみを印刷します。





プログラム側では、以下の形で値をセットします。
SetParameterValue()をコールするだけですが、注意点は必ずSetDataSource()・Refresh()の後で値のセットをしなければなりません。
この順序を入れ替えてしまうと、せっかくセットした値がクリアされてしまい、印刷処理の実行時に”パラメータ値が有りません”のエラーダイアログが表示されます。

DataTable table = new DataTable();
table.add( ... );
 
// 印字データをセット
crystalReport1.SetDataSource( table );
crystalReport1.Refresh();
crystalReport1.SetParameterValue( "testParam", "てすとです" );  // 指定したパラメータ値をセットする




上記のプログラムを実際に実行すると、以下のように帳票上へ値が表示されます。

[C#,VS2010]CrystalReportsで宛名ラベルを印字する(横方向へ明細データの繰返し)

前回は、CrystalReports作成したデータをPDF形式で出力させる方法を説明しました。

今回の記事では、宛名ラベルのような複数データを横方向に繰り返し印刷する帳票の作成方法を説明します。


今回のお題

印字内容は、純粋な宛名ラベルだったら「郵便番号+住所+氏名」程度ですが、今回は通販での注文配送をイメージして下記の項目を印字してみる事にします。

postalCode      郵便番号
region          都道府県
addressLine1    住所(1行目)
addressLine2    住所(2行目)
addressLine3    住所(3行目)
name            氏名
orderId         注文ID
sku             商品ID
labelId         ラベルID
headerText      上部に印刷する付加情報



また、宛名を印刷するラベルは下記の商品を想定します。


各ラベルのサイズは66×22.9mmで、上・左の余白はそれぞれ12.9mmと6mmです。



データセット定義

まずは、前々回と同様DataSetのフィールド定義を行います。
データ型は全てStringです。



レイアウト定義

次に、レイアウト定義を行います。
例によって、メニューより”プロジェクト→新しい項目の追加”をクリックし、”Reporting→Crystal レポート”を選択します。



レポートウィザードを使用で、エキスパートの使用は標準を選択します。
ここで思わずエキスパートの使用で”宛名ラベル”を選択したくなるところですが、宛名ラベルを選んでレイアウトを生成させると明細欄が非常に編集しにくい(実際に一度やってみると分かります)ので、あえて”標準”で雛形を作った後にプロパティを変更する事にします。



データは、先ほど作成したDataSetを指定します。


フィールドは全項目を選択します。


グループ化、レコードの選択はデフォルトのまま次へをクリックします。
[画像無し]


スタイルは”標準”でOKです。



自動生成された帳票レイアウトは、以下の通りです。
これをベースに、宛名シール用へ定義を変更していきます。



ヘッダ部のレイアウト定義

まずは、レポートヘッダ、フッタの高さを0にします。
レポートヘッダのタイトルをクリックし、Heightを0にします。(フッタも同様)
また、フッタの右端にページ番号のコントロールがあるので、ページヘッダに移動しておきます(宛名ラベル上部の余白に印刷させます)。




次にページヘッダの高さをセットします。
heightにセットする値は単位がtwipというもので、1440twipが1インチ(2.54cm)に相当します。

今回のレイアウトでは、上部余白が12.9mmのシールに印刷したいので…
1.29(cm) / 2.54(cm/inch) * 1440(twip/inch) ≒ 731.338(twip)
となり、731をセットします。

ヘッダにあったタイトルは、宛名ラベルでは不要なので全て削除します。
また、DataSetで定義したheaderTextフィールドは、ページヘッダ用なのでヘッダ欄に移動させます。

ページヘッダ部を設定した後の状況は以下のような感じになります。



詳細部のレイアウト定義

ヘッダができたら次は明細部の定義を行います。
こちらも、まずは高さを設定します。

今回のレイアウトでは、高さが33.9mmのシールに印刷したいので、以下の式により1929を指定します。
3.39 / 2.54 * 1440 ≒ 1928.897

高さを変えたら、明細部にあるフィールドの各コントロールを左の方に寄せておきます。




この状態で、もし印刷を行うとラベルの左端のみ印刷できる状態になりました。
ですが、今回は1行に3枚のラベルがある為、横方向の繰り返し処理を定義する必要があります。

横方向の繰り返しを行うには、詳細のタイトルを右クリックし「セクションエキスパート」を選択します。


左側で詳細が選ばれているのを確認し、右側共通タブの「複数の列で書式設定」にチェックを入れます。


チェックを入れると、レイアウトタブが追加されます。



レイアウトタブに移ると、詳細バンドの幅を指定する事が可能です。
ここはcm単位で指定可能なので、そのまま設定します。


設定を行うと、明細バンドのタイトル幅が短くなりました。


また、他に印字項目のフォントサイズ・書式の変更も行いました。
以上で、レイアウト作成処理は官僚です。


帳票発行のデータセット処理


以下のような感じで、テストデータの作成&レポートの印刷処理を行います。
ここの考え方は、前回までと特に変更ありません。

private void button1_Click( object sender, EventArgs e ) {
    // レコード定義を行う
    DataTable table = new DataTable();
    table.Columns.Add("postalCode",   Type.GetType("System.String"));
    table.Columns.Add("region",       Type.GetType("System.String"));
    table.Columns.Add("addressLine1", Type.GetType("System.String"));
    table.Columns.Add("addressLine2", Type.GetType("System.String"));
    table.Columns.Add("addressLine3", Type.GetType("System.String"));
    table.Columns.Add("name",         Type.GetType("System.String"));
    table.Columns.Add("orderId",      Type.GetType("System.String"));
    table.Columns.Add("sku",          Type.GetType("System.String"));
    table.Columns.Add("labelId",      Type.GetType("System.String"));
    table.Columns.Add("headerText",   Type.GetType("System.String"));
 
    for ( int loop = 0; loop < 20; loop++ ) {
        // テスト用印字データを追加
        DataRow row;
        row = table.NewRow();
        row["postalCode"]   = "〒111-1111";
        row["region"]       = "東京都";
        row["addressLine1"] = "千代田区 丸の内 一丁目1番地1192";
        row["addressLine2"] = "セントラルレジデンス昭和荘12F 24号室";
        row["name"]         = "鈴木一郎" + " 様";
        row["orderId"]      = "xxxx-xxxx";
        row["sku"]          = "SKU0001";
        row["labelId"]      = loop.ToString( "0000" );
        row["headerText"]   = "PrintDate=2012/12/24 12:12:12; LastOrder=xxxx-xxxx(1223_235959); Qty=7";
        table.Rows.Add(row);
    }
 
    // 印字データをセット
    crystalReport1.SetDataSource( table );
    crystalReport1.Refresh();
 
    // プリンタに印刷
    crystalReport1.PrintToPrinter( 0, false, 0, 0 );
}





動作確認

プログラムを実行すると、以下のように横方向の繰り返しがある宛名ラベルが作成できました。
氏名の下にある連番を見ると分かりますが、ラベルは横方向に順に印刷されます。




印刷方向を縦にしたい場合は、前述の”明細セクションのレイアウト”タブで、印刷方向を「縦から横」に変更します。


変更後に再実行してみると、縦方向に順に印刷されている事が確認できます。

[C#,VS2010]CrystalReportsでPDF出力を行う

前回の記事では、作成した帳票をPrintToPrinter()メソッドでプリンタに出力しました。
  参考:CrystalReportsで自作DataSetを元に帳票を印刷する。


帳票の結果を常に印刷したい場合は前回の方法で問題ないのですが、出力結果をメールしたい場合等においては結果をpdfの電子媒体として保存したい場合もあります。このような場合はCrystalReportDocumentクラスが持っているExportOptionsプロパティを指定する事によって、プリンタではなくPDFファイルへ出力する事が可能です。


PDF出力を行う処理は以下の通りです。
※下記のコードは前回の記事で作成したプログラムを元にしていますので、帳票レイアウト作成などの手順について知りたい場合は過去記事を参照してください。

private void button1_Click( object sender, EventArgs e ) {
    // レコード定義を行う
    DataTable table = new DataTable();
    table.Columns.Add("id",    Type.GetType("System.String"));
    table.Columns.Add("name",  Type.GetType("System.String"));
    table.Columns.Add("price", Type.GetType("System.Int32"));
 
    // 印字データを追加
    DataRow row;
    row = table.NewRow();
    row["id"]    = "iten_no1";
    row["name"]  = "りんご";
    row["price"] = 200;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no2";
    row["name"]  = "みかん";
    row["price"] = 220;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no3";
    row["name"]  = "ばなな";
    row["price"] = 40;
    table.Rows.Add(row);
 
    // 印字データをセット
    crystalReport1.SetDataSource( table );
    crystalReport1.Refresh();
 
    // プリンタに印刷
    //crystalReport1.PrintToPrinter( 0, false, 0, 0 );
 
 
    // PDF形式でファイル出力
    try {
        // 出力先ファイル名を指定
        CrystalDecisions.Shared.DiskFileDestinationOptions fileOption;
        fileOption = new CrystalDecisions.Shared.DiskFileDestinationOptions();
        fileOption.DiskFileName               = "c:\\work\\output.pdf";
 
        // 外部ファイル出力をPDF出力として定義する
        CrystalDecisions.Shared.ExportOptions  option;
        option = crystalReport1.ExportOptions;
        option.ExportDestinationType = CrystalDecisions.Shared.ExportDestinationType.DiskFile;
        option.ExportFormatType      = CrystalDecisions.Shared.ExportFormatType.PortableDocFormat;
        option.FormatOptions         = new CrystalDecisions.Shared.PdfRtfWordFormatOptions();
        option.DestinationOptions    = fileOption;
 
        // pdfとして外部ファイル出力を行う
        crystalReport1.Export();
    } catch (Exception ex) {
        MessageBox.Show( ex.Message );
    }
}




今回変更があった場所は、try内の記述です。
まず元にDiskFileDestinationOptionsオブジェクトを使用して、pdfファイルの出力先を決定します。

次にcrystalReportDocument.ExportOptionsが管理している4つのプロパティをセットする事で、データをpdf形式でファイル出力する事を定義しています。

最後にcrystalReportDocument.Export()をコールし、実際にpdfファイルを作成します。




このプログラムを実行しすると、以下のようにpdfファイルが作成されるはずです。



中身も、前回作成したものと同じになっています。

[C#,VS2010]CrystalReportsで自作DataSetを元に帳票を印刷する。



前回はVisualStudio2010の環境で、C#を使用してCrystalReportsの帳票印刷のセットアップと、簡単な帳票発行の動作確認を行いました。
VS2010でCrystalReportsを使用して、帳票を作成する
今回は、プログラムから指定したデータ郡を複数レコード、印刷してみます。


帳票プログラムの場合、複数レコードの印刷は、データベースからデータを取得して、その内容を印刷する事がよくあるパターンです。C#ではDBから取得したデータは、通常DataSetクラスを使用して管理します。

いきなりDBを使用したパターンのプログラムを解説すると考慮すべき点(=説明する内容)が多くなってしまう為、今回の記事ではDBを使用せず、自作のデータセットを元に複数行の明細を持つ帳票を作成し、基本の流れをつかむ事とします。

画面の定義

前回同様、今回もボタンを1つとCrystalReportDocumentコントロールを1つ配置します。
CrystalReportDocumentは、レポーティングのカテゴリ内に有ります。
レポーティングがない場合は、CrystalReportのセットアップができていないので、前回の記事を参考にセットアップを行ってください。



データセットの定義

まずはデータセットのフィールド定義を行います。
ここで定義したフィールド名は、プログラムから帳票に渡すデータのキー名称となります

メニューより、”プロジェクト→新しい項目の追加”を選択します。


“データ→データセット”を選択します。



画面にxsdファイルが表示されます。
データセットの定義は、このxsdファイルで行って行きます。



表示されたxsdファイルを右クリックし、追加->DataTableを選択します。



DataTable1が表示されるので、選択してF2キーを押し、分かりやすい名前に変更します。
今回は帳票用のテストテーブル定義なので”RepTestTable”にしました。
ここで決めた名称は、帳票のレイアウト定義時に使用します。

   ↓



次に、このテーブルに対してフィールド定義を行っていきます。
Tableを右クリックして、追加->列を選択します。


キー名を指定します。
今回はキー名をidにしました。


プロパティを見ると、データ型はデフォルト値としてStringになっています。



同様に、name,price列を追加します。


price列(金額)は数値なので、Int32型に変更しておきます。


以上で、データセットの定義は完了です。
ここで定義した情報はCrystalReportsの帳票レイアウト作成や、プログラム中のデータをセットする時に使用します。


帳票レイアウトの作成


前回同様、メニューより”プロジェクト→新しい項目の追加”をクリックし、”Reporting→Crystal レポート”を選択します。



“レポートウィザードを使用”を選択します。


データの選択画面が表示されます。
ここで、プロジェクトデータ->ADO.NETデータセットを選択すると、先ほど作成したデータセットが表示されます。


項目を選択後、”>”ボタンをクリックし、選択したテーブルに移動させます。
移動させたら、画面下の”次へ”をクリックしてください。


選択可能なフィールドを全て選択し、表示するフィールドに移します。


グループ化は、小計などを表示する際に使用します。
今回はグループ化を行わないので、そのまま”次へ”をクリックします。
[画面キャプチャ取り忘れました…]

レコードの選択は、データセットの中から特定の条件に一致するものだけを印字させるためのフィルタ機能です。
今回は印字データをプログラムから明示的にセットするので、これもそのまま”次へ”をクリックします。
[画面キャプチャ取り忘れました…]

スタイルは標準を選択して終了をクリックします。


完了を押すと、レポートのレイアウト画面が表示されます。
既に、データセットのフィールドが画面に配置されています。


ページヘッダ側の”id”を選択しプロパティを確認すると、ITextObject型である事が分かります。
ITextObjectは、いわゆる固定の文字列になります。




同様に、明細側の”id”はIFieldObject型になっています。
ITextObjectは、いわゆる変数部となり、実際の値はプログラム側からセットします。




項目の印字位置を移動させたい場合は、明細側をドラッグするとタイトルの位置も同時に移動してくれます。逆に、タイトル側をドラッグしてしまうと、明細側は移動してくれないので注意が必要です。


前回と同様、固定文字のテキストを追加する事もできます。
今回はページヘッダに帳票タイトルとして、”商品マスタ”の文字を追加しました。


最初に配置されたヘッダのタイトル文字を変えたい場合は、項目をダブルクリックすれば編集できます。


いろいろ微調整した結果、今回は以下のレイアウトを作成しました。



レイアウトを作成し終わったら前回と同様、CrystalReportDocumentのFileNameに、rptファイルを指定してください。



印字データのセット処理

次は、先ほど作成した帳票にデータを流し込む処理を記述します。

ボタンのイベントハンドラに以下のコードを追加してください。

private void button1_Click( object sender, EventArgs e ) {
    // レコード定義を行う
    DataTable table = new DataTable();
    table.Columns.Add("id",    Type.GetType("System.String"));
    table.Columns.Add("name",  Type.GetType("System.String"));
    table.Columns.Add("price", Type.GetType("System.Int32"));
 
    // 印字データを追加
    DataRow row;
    row = table.NewRow();
    row["id"]    = "iten_no1";
    row["name"]  = "りんご";
    row["price"] = 200;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no2";
    row["name"]  = "みかん";
    row["price"] = 220;
    table.Rows.Add(row);
 
    row = table.NewRow();
    row["id"]    = "iten_no3";
    row["name"]  = "ばなな";
    row["price"] = 40;
    table.Rows.Add(row);
 
    // 印字データをセット
    crystalReport1.SetDataSource( table );
    crystalReport1.Refresh();
 
    // プリンタに印刷
    crystalReport1.PrintToPrinter( 0, false, 0, 0 );
}



何を行っているか確認するため、コードを順に読んでいきます。


まずはテーブル定義の作成です。
table.Columns.Add()の引数は、xsdでデータセットのフィールド定義を行った時と同じものを指定する必要があります。

    // レコード定義を行う
    DataTable table = new DataTable();
    table.Columns.Add("id",    Type.GetType("System.String"));
    table.Columns.Add("name",  Type.GetType("System.String"));
    table.Columns.Add("price", Type.GetType("System.Int32"));




次に帳票に印字するレコードを登録していきます。
DataRow型の変数に値を登録し、table.Rows.Add()でテーブルに追加します。

    // 印字データを追加
    DataRow row;
    row = table.NewRow();
    row["id"]    = "iten_no1";
    row["name"]  = "りんご";
    row["price"] = 200;
    table.Rows.Add(row);




DataTableにデータを登録し終わったら、画面に貼り付けたCrystalReportDocumentに渡してあげます。
データのRefresh後、PrintToPrinterで印字処理を行います。

    // 印字データをセット
    crystalReport1.SetDataSource( table );
    crystalReport1.Refresh();
 
    // プリンタに印刷
    crystalReport1.PrintToPrinter( 0, false, 0, 0 );



上記の処理で、プログラムから指定したデータ郡を帳票印刷する事ができます。


※2012/3/20追記:
DataSet.xsdを作成すると自動でデータセットクラスが生成されるので、上記のコードは若干冗長でした。
詳細は下記のの追記記事を参照してください
DataSet.xsdを作成すると、自動でデータセットクラスが生成される。


動作確認


プログラムを実行しボタンをクリックします。
以下のように帳票が印刷されればOKです。



以上で,プログラムから指定したデータ郡を複数レコード印刷する作業は完了です。

[C#]VS2010でCrystalReportsを使用して、帳票を作成する

本記事では、VisualStudio2010、C#の環境でCrystalReportsを使用して印刷を行います。
CrystalReportsは、VisualStudio2010のProfessional以上でのみ使用可能です。

ちなみに、Expressエディションので印刷を行う場合はPrintDocument/PrintDialogコントロールを使用すれば可能ですが、キャンバスに文字や画像を配置するような形になるので、業務で使用するような帳票を作成するのは非常に手間が掛かります。


セットアップ

VisualStudioをインストールしただけでは、CrystalReportsはセットアップされていません。
この為、まずはコントロールのセットアップを行います。

プロジェクトを新規作成し、メニューより”プロジェクト→新しい項目の追加”を選択します。


“Reporting→Crystal レポート”を選択します。



選択すると、画面にCrystalReportsダウンロードのリンクが表示されるのでクリックします。


ダウンロードサイトが表示されるので、”ダウンロードを開始する”のリンクをクリックします。


パッケージ一覧から、一番上のふファイルをダウンロードします。
2012/3現在で、ファイル名はCRforVS13_0_2.exeで、サイズは288MBでした。


ダウンロードファイルはrarの自己展開形式になっているためexeを実行し展開を行います。
展開できたら、VisualStudioを終了しexeを実行した上でsetup.exeを実行します。





言語を選択し、OKをクリックします。


次へをクリックして行きます。





インストールはかなり時間が掛かるため(10分程度?)、暫く待ちます。


64bit環境の場合は、ランタイムのインストールが指示されるので,こちらも追加でインストールします。


以上で、セットアップは完了です。


動作確認用の帳票を作成する

次に、動作確認を兼ねて、簡単な帳票を2通りの方法で発行してみます。

1.レイアウトの作成

まずは、レイアウトを作成します。

再度VisualStudionのメニューより、”プロジェクト→新しい項目の追加”を選び、”Reporting→Crystal レポート”をプロジェクトに追加します。


ウィザードが表示されます。
動作確認が目的なので、今回は”空のレポート”を選択します。



レイアウト定義を行う画面が表示されます。
右クリックのメニューより、挿入→テキストオブジェクトを選択します。


ページヘッダに、適当なテキストを挿入します。


画面下のプレビューを選択し、帳票のプレビュー画面が表示される事を確認します。


以上で動作確認用帳票のレイアウト作成は完了です。


2.プレビュー後、印刷を行う

レイアウトを作成したら、画面から帳票をプレビューできるようにします。

ボタンを1つと、CrystalReportViewerコントロールをフォームに貼り付けます。


CrystalReportViewerの右上にある”▲”をクリックし、”Crystalレポートの選択”を指定します。


先ほど作成したレイアウトファイルを指定して、OKをクリックします。


この状態でプログラムを実行すると、プレビュー画面が表示されます。
また、左上のプリンタアイコンをクリックすると印刷ができます。




3.プレビューせずに直接印刷を行う

次は、プレビュー画面を表示させずに、画面のボタンをクリックしたら帳票が印刷されるようにします。


先ほど貼り付けたCrystalReportViewerを削除し、替わりにCrystalReportDocumentを貼り付けます。


プロパティのFileNameに、作成したレイアウトファイル(*.rpt)を指定します。
※ちなみに、コードから指定する場合は、以下のような記述になります。

crystalReport1.FileName = "rassdk://C:\\dirName\\CrystalReport1.rpt";







ボタンのイベントハンドラに、以下のコードを記述します。

private void button1_Click( object sender, EventArgs e ) {
	crystalReport1.PrintToPrinter( 0, false, 0, 0 );
}




プログラムを実行しボタンをクリックすると、帳票がプリンタに印刷されます。


以上でインストールと、簡単な動作確認は終わりです。
次回は、複数レコードを持つデータを印刷してみます。
  →CrystalReportで自作DataSetを元に帳票を印刷する。

SAP Crystal Reports 2011 レポート開発入門ガイド

[C#]プログラム中でApplication.Exit();を実行しても、プログラムが終了しない

プログラム中でApplication.Exit()を実行するとプログラムを終了させる事が可能です。
ですが、以下の場合はプログラムを終了させる事ができません。

  BackgroundWorkerを使用している場合
     かつ
  指定されたタスクが未完了の場合



これは、プログラムのイベントループがBackgroundWorkerの終了待ち状態となり、結果としてプログラムが終了できない事が原因です。
※勿論、BackgroundWorkerのDoWork()イベントが終了すれば、プログラムは終了します。





上記の状態を避けるには、Application.Exit()を呼ぶ前にBackgroundWorkerのCancelAsyncをコールし、実行中のタスクをキャンセルしてあげる必要があります。
もちろん、呼び出されたBackgroundWorker側では、キャンセル処理に対応できている必要が有ります。

BackgroundWorkerをキャンセル処理に対応するためには、以下の3点を実装する必要があります。



1.WorkerSupportsCancellationプロパティをtrueにしておく

これはプロパティを変更するだけなので簡単です。



2.DoWorkイベント内で、CancellationPendingをチェックする

以下のような感じで、CancellationPendingを定期的にチェックし値がtrueならバックグラウンド処理を速やかに終了させます。

void worker1_DoWork(object sender, DoWorkEventArgs e) {
    BackgroundWorker worker = (BackgroundWorker)sender ;
    while ( true ) {
        if ( worker.CancellationPending ) {
            // キャンセル要求があれば、速やかに処理を終わらせる
            return;
        }
        //...バックグラウンドで行う処理
    }
}





3.プログラムを終了させる際にCancelAsync();をコールする

CancelAsync()をコールしバックグラウンド処理側にキャンセル要求を投げます。
このメソッドを呼ぶ事で、前述のCancellationPendingがtrueになります。

worker1.CancelAsync();
Application.Exit();




関連記事:未停止のbackgroundWorkerオブジェクトを調べる方法

[C#]DataGridViewを指定した列でソート可能にする

以下のコードで、1列目の内容を元に昇順ソートが行えます。
降順にしたい場合は、第二引数をDescendingに変更します。

// 1列目データを元に昇順でソート
DataGridView1.Sort( DataGridView1.Columns[0], ListSortDirection.Ascending );



また、逆に列のヘッダをクリックしてもソートできないようにさせるには、以下のコードで対応できます。
ソートできない列があらかじめ決まっている場合は、列のプロパティ定義であらかじめ指定しておく事も勿論可能です。

// 列ヘッダをクリックしても並び替えできないようにする
DataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;


[Android]成金大作戦のマップ一覧

Mocoゲームが作成している戦争シミュレーションゲーム、「成金大作戦」のマップ一覧です。

成金大作戦にはいくつかシリーズが有りますが、「成金大作戦決定版」・「アルテマ成金大作戦」はマップが異なるので注意してください。
(成金大作戦決定版のほうは,ステージによってはマップが同じ場合も有ります)

※画像をクリックすると大きなサイズで表示されます。
戦術と指揮 ― 命令の与え方・集団の動かし方

ステージ1

成金大作戦 ステージ1マップ



ステージ2

成金大作戦 ステージ2マップ



ステージ3

成金大作戦 ステージ3マップ



ステージ4

成金大作戦 ステージ4マップ



ステージ5

成金大作戦 ステージ5マップ



ステージ6

成金大作戦 ステージ6マップ



ステージ7

成金大作戦 ステージ7マップ



ステージ8

成金大作戦 ステージ8マップ



ステージ9

成金大作戦 ステージ9マップ



ステージ10

成金大作戦 ステージ10マップ



このゲームのカテゴはウォー・シミュレーションゲームで、同類のゲームとしては大戦略やファミコンウォーズ、ファイアーエムブレムなどが有ります。ウォー・シミュレーションゲーム好きで、戦術を研究したい人には、松村 劭さんが書いた戦術と指揮という本がお勧めです。
敵を迎え撃つ陣の取り方や補給路の確保など作戦の立て方の基本を知る事ができ、文章もかなりわかりやすく書かれているので読みやすいです。
4569665969
戦術と指揮―命令の与え方・集団の動かし方 (PHP文庫)

名古屋市の地下鉄駅付近で,自転車の駐輪エリア情報まとめ

2012年3月現在、名古屋市の地下鉄駅付近は駐輪禁止になっています。

各駅の禁止エリアは名古屋市のWebサイト上で確認できるのですが、案内がpdfになっているのと、括りが行政区単位なのでちょっと見辛くなってます。
自転車等放置禁止区域のご案内




これだと一覧性が悪いので、各地下鉄の路線単位にまとめめなおした資料を作成してみました。
駐輪禁止エリアは下記のページにて確認できます。
東山線|名城線|鶴舞線|桜通線|名港線




自転車をこれらの禁止区域内に放置すると、警告無しで即時撤去されてしまう可能性がある為、要注意です。撤去された場合は保管所まで出向いて、印鑑・身分証明書の提示と、1500円の罰金を払う必要があります。

ちなみにこれらの駅付近には、有料の自転車駐車場が設置されています。バイクは50cc以下のみ駐輪可です。料金はどこの駅でも一律で、自転車は100円/日,原付は200円/日になっています。
名古屋駅付近など大きな駅の場合は、50cc以上でも使える駐輪所も用意されていますが、スペースが小さいため満車のことが多いのであまり当てにならないです。


有料駐輪所の近くに放置した場合は、撤去ではなく、有料エリアに移動された上でロックされる場合もあります。この場合は清算機で料金を支払うとロックが解除されます。

また、禁止エリア外に駐輪した場合ですが、(条例上は)7日間経過すると撤去の対象となります。
なので駐輪代を払いたくない場合は、禁止エリアを確認した上でから離れた場所に止めてしまうのもひとつの手かも知れません(当然ですが、この場合でも周囲の迷惑にならない場所を選んで駐輪しましょう)。

[C#]Formのコントロールをダブルバッファ対応にする方法

画面を頻繁にリフレッシュするプログラムを作る場合、コントロールが持つDoubleBufferedプロパティをtrueすることで、ダブルバッファ機能を有効にすることが出来ます。
Formの場合は、Form1.DoubleBuffered = trueとすればOKなのですが、DataGridView等のコントロールの場合はこのプロパティがProtectedとなっているため、プログラムから値を変更することが出来ません。

この場合は、リフレクションを使用して、DoubleBufferedプロパティを強制的にtrueにすれば、チラツキを抑えられます。

public static void SetDoubleBuffered(System.Windows.Forms.Control c) {
    // リモートアクセス中の場合は何もしない
    if (System.Windows.Forms.SystemInformation.TerminalServerSession) {
      return;
    }
 
    // ダブルバッファ制御用のプロパティを強制的に取得する
    System.Reflection.PropertyInfo p;
    p  = typeof( System.Windows.Forms.Control).GetProperty(
                 "DoubleBuffered", 
                  System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
 
    // ダブルバッファを有効にする
    p.SetValue(c, true, null); 
}

[C#]Formから指定した名前を持つコントロールをLinqで取得する

Formが持つControlsプロパティより、指定した名前を持つコントロールを取得できます。

var target = from x in Controls.Find("label1", false)
    where x.GetType() == typeof(Label)
    select x;
 
Label label = (Label)target.FirstOrDefault();

名古屋市地下鉄の駅付近に設けられている駐輪禁止エリア (名港線)

地下鉄名港線の、各駅付近の駐輪禁止エリア一覧です(2012/01現在)。

このページには下記の駅の情報が記載されています
金山駅,日比野駅,六番町駅,東海通駅,港区役所駅,築地口駅,名古屋港駅

また、他の路線沿線の駐輪禁止エリアが知りたい場合は、下記のページで確認してください。
東山線
名城線
鶴舞線
桜通線
名港線


E01:金山駅

名港線金山駅付近の駐輪禁止エリア


E02:日比野駅

駐輪禁止エリア無し


E03:六番町駅

名港線六番町駅付近の駐輪禁止エリア


E04:東海通駅

名港線東海通駅付近の駐輪禁止エリア


E05:港区役所駅

駐輪禁止エリア無し


E06:築地口駅

名港線築地口駅付近の駐輪禁止エリア


E07:名古屋港駅

駐輪禁止エリア無し



その他の路線の情報:東山線 名城線 鶴舞線 桜通線 名港線

名古屋市地下鉄の駅付近に設けられている駐輪禁止エリア (桜通線)

地下鉄桜通線の、各駅付近の駐輪禁止エリア一覧です(2012/01現在)。

このページには下記の駅の情報が記載されています
中村区役所駅,名古屋駅,国際センター駅,丸の内駅,久屋大通駅,高岳駅,車道駅,今池駅,吹上駅,御器所駅,桜山駅,瑞穂区役所駅,瑞穂運動場西駅,新瑞橋駅,桜本町駅,鶴里駅,野並駅,鳴子北駅,相生山駅,神沢駅,徳重駅

また、他の路線沿線の駐輪禁止エリアが知りたい場合は、下記のページで確認してください。
東山線
名城線
鶴舞線
桜通線
名港線


S01:中村区役所駅

桜通線中村区役所駅付近の駐輪禁止エリア


S02:名古屋駅

桜通線名古屋駅付近の駐輪禁止エリア


S03:国際センター駅

桜通線国際センター駅付近の駐輪禁止エリア


S04:丸の内駅

駐輪禁止エリア無し


S05:久屋大通駅

駐輪禁止エリア無し


S06:高岳駅

桜通線高岳駅付近の駐輪禁止エリア


S07:車道駅

桜通線車道駅付近の駐輪禁止エリア


S08:今池駅

桜通線今池駅付近の駐輪禁止エリア


S09:吹上駅

桜通線吹上駅付近の駐輪禁止エリア


S10:御器所駅

桜通線御器所駅付近の駐輪禁止エリア


S11:桜山駅

桜通線桜山駅付近の駐輪禁止エリア


S12:瑞穂区役所駅

桜通線瑞穂区役所駅付近の駐輪禁止エリア


S13:瑞穂運動場西駅

桜通線瑞穂運動場西駅付近の駐輪禁止エリア


S14:新瑞橋駅

桜通線新瑞橋駅付近の駐輪禁止エリア


S15:桜本町駅

桜通線桜本町駅付近の駐輪禁止エリア


S16:鶴里駅

桜通線鶴里駅付近の駐輪禁止エリア


S17:野並駅

桜通線野並駅付近の駐輪禁止エリア


S18:鳴子北駅

桜通線鳴子北駅付近の駐輪禁止エリア


S19:相生山駅

桜通線相生山駅付近の駐輪禁止エリア


S20:神沢駅

桜通線神沢駅付近の駐輪禁止エリア


S21:徳重駅

桜通線徳重駅付近の駐輪禁止エリア


その他の路線の情報:東山線 名城線 鶴舞線 桜通線 名港線

名古屋市地下鉄の駅付近に設けられている駐輪禁止エリア (鶴舞線)

地下鉄鶴舞線の、各駅付近の駐輪禁止エリア一覧です(2012/01現在)。

このページには下記の駅の情報が記載されています
上小田井駅,庄内緑地公園駅,庄内通駅,浄心駅,浅間町駅,丸の内駅,伏見駅,大須観音駅,上前津駅,鶴舞駅,荒畑駅,御器所駅,川名駅,いりなか駅,八事駅,塩釜口駅,植田駅,原駅,平針駅,赤池駅

また、他の路線沿線の駐輪禁止エリアが知りたい場合は、下記のページで確認してください。
東山線
名城線
鶴舞線
桜通線
名港線


T01:上小田井駅

鶴舞線上小田井駅付近の駐輪禁止エリア


T02:庄内緑地公園駅

鶴舞線庄内緑地公園駅付近の駐輪禁止エリア


T03:庄内通駅

鶴舞線庄内通駅付近の駐輪禁止エリア


T04:浄心駅

鶴舞線浄心駅付近の駐輪禁止エリア


T05:浅間町駅

鶴舞線浅間町駅付近の駐輪禁止エリア


T06:丸の内駅

駐輪禁止エリア無し


T07:伏見駅

鶴舞線伏見駅付近の駐輪禁止エリア


T08:大須観音駅

駐輪禁止エリア無し


T09:上前津駅

駐輪禁止エリア無し


T10:鶴舞駅

駐輪禁止エリア無し


T11:荒畑駅

鶴舞線荒畑駅付近の駐輪禁止エリア


T12:御器所駅

鶴舞線御器所駅付近の駐輪禁止エリア


T13:川名駅

鶴舞線川名駅付近の駐輪禁止エリア


T14:いりなか駅

鶴舞線いりなか駅付近の駐輪禁止エリア


T15:八事駅

鶴舞線八事駅付近の駐輪禁止エリア


T16:塩釜口駅

鶴舞線塩釜口駅付近の駐輪禁止エリア


T17:植田駅

鶴舞線植田駅付近の駐輪禁止エリア


T18:原駅

鶴舞線原駅付近の駐輪禁止エリア


T19:平針駅

鶴舞線平針駅付近の駐輪禁止エリア


T20:赤池駅

駐輪禁止エリア無し



その他の路線の情報:東山線 名城線 鶴舞線 桜通線 名港線

名古屋市地下鉄の駅付近に設けられている駐輪禁止エリア (名城線)

地下鉄名城線の、各駅付近の駐輪禁止エリア一覧です(2012/01現在)。

このページには下記の駅の情報が記載されています
金山駅,東別院駅,上前津駅,矢場町駅,栄駅,久屋大通駅,市役所駅,名城公園駅,黒川駅,志賀本通駅,平安通駅,大曽根駅,ナゴヤドーム前矢田駅,砂田橋駅,茶屋ヶ坂駅,自由ヶ丘駅,本山駅,名古屋大学駅,八事日赤駅,八事駅,総合リハビリセンター駅,瑞穂運動場東駅,新瑞橋駅,妙音通駅,堀田駅,伝馬町駅,神宮西駅,西高蔵駅

また、他の路線沿線の駐輪禁止エリアが知りたい場合は、下記のページで確認してください。
東山線
名城線
鶴舞線
桜通線
名港線


M01:金山駅

名城線金山駅付近の駐輪禁止エリア


M02:東別院駅

名城線東別院駅付近の駐輪禁止エリア


M03:上前津駅

駐輪禁止エリア無し


M04:矢場町駅

駐輪禁止エリア無し


M05:栄駅

名城線栄駅付近の駐輪禁止エリア


M06:久屋大通駅

駐輪禁止エリア無し


M07:市役所駅

駐輪禁止エリア無し


M08:名城公園駅

名城線名城公園駅付近の駐輪禁止エリア


M09:黒川駅

名城線黒川駅付近の駐輪禁止エリア


M10:志賀本通駅

名城線志賀本通駅付近の駐輪禁止エリア


M11:平安通駅

名城線平安通駅付近の駐輪禁止エリア


M12:大曽根駅

名城線大曽根駅付近の駐輪禁止エリア


M13:ナゴヤドーム前矢田駅

名城線ナゴヤドーム前矢田駅付近の駐輪禁止エリア


M14:砂田橋駅

名城線砂田橋駅付近の駐輪禁止エリア


M15:茶屋ヶ坂駅

名城線茶屋ヶ坂駅付近の駐輪禁止エリア


M16:自由ヶ丘駅

名城線自由ヶ丘駅付近の駐輪禁止エリア


M17:本山駅

名城線本山駅付近の駐輪禁止エリア


M18:名古屋大学駅

名城線名古屋大学駅付近の駐輪禁止エリア


M19:八事日赤駅

名城線八事日赤駅付近の駐輪禁止エリア


M20:八事駅

名城線八事駅付近の駐輪禁止エリア


M21:総合リハビリセンター駅

名城線総合リハビリセンター駅付近の駐輪禁止エリア


M22:瑞穂運動場東駅

名城線瑞穂運動場東駅付近の駐輪禁止エリア


M23:新瑞橋駅

名城線新瑞橋駅付近の駐輪禁止エリア


M24:妙音通駅

名城線妙音通駅付近の駐輪禁止エリア


M25:堀田駅

名城線堀田駅付近の駐輪禁止エリア


M26:伝馬町駅

名城線伝馬町駅付近の駐輪禁止エリア


M27:神宮西駅

名城線神宮西駅付近の駐輪禁止エリア


M28:西高蔵駅

駐輪禁止エリア無し




その他の路線の情報:東山線 名城線 鶴舞線 桜通線 名港線

名古屋市地下鉄の駅付近に設けられている駐輪禁止エリア (東山線)

地下鉄東山線で各駅付近の駐輪禁止エリア一覧です。

このページには下記の駅の情報が記載されています
高畑駅,八田駅,岩塚駅,中村公園駅,中村日赤駅,本陣駅,亀島駅,名古屋駅,伏見駅,栄駅,新栄町駅,千種駅,今池駅,池下駅,覚王山駅,本山駅,東山公園駅,星ヶ丘駅,一社駅,上社駅,本郷駅,藤が丘駅

また、他の路線沿線の駐輪禁止エリアが知りたい場合は、下記のページで確認してください。
東山線
名城線
鶴舞線
桜通線
名港線

H01:高畑駅

東山線高畑駅付近の駐輪禁止エリア


H02:八田駅

東山線八田駅付近の駐輪禁止エリア


H03:岩塚駅

東山線岩塚駅付近の駐輪禁止エリア


H04:中村公園駅

東山線中村公園駅付近の駐輪禁止エリア


H05:中村日赤駅

東山線中村日赤駅付近の駐輪禁止エリア


H06:本陣駅

東山線本陣駅付近の駐輪禁止エリア


H07:亀島駅

東山線亀島駅付近の駐輪禁止エリア


H08:名古屋駅

東山線名古屋駅付近の駐輪禁止エリア


H09:伏見駅

東山線伏見駅付近の駐輪禁止エリア


H10:栄駅

東山線栄駅付近の駐輪禁止エリア


H11:新栄町駅

東山線新栄町駅付近の駐輪禁止エリア


H12:千種駅

東山線千種駅付近の駐輪禁止エリア


H13:今池駅

東山線今池駅付近の駐輪禁止エリア


H14:池下駅

東山線池下駅付近の駐輪禁止エリア


H15:覚王山駅

東山線覚王山駅付近の駐輪禁止エリア


H16:本山駅

東山線本山駅付近の駐輪禁止エリア


H17:東山公園駅

駐輪禁止エリア無し


H18:星ヶ丘駅

東山線星ヶ丘駅付近の駐輪禁止エリア


H19:一社駅

東山線一社駅付近の駐輪禁止エリア


H20:上社駅

東山線上社駅付近の駐輪禁止エリア


H21:本郷駅

東山線本郷駅付近の駐輪禁止エリア


H22:藤が丘駅

東山線藤が丘駅付近の駐輪禁止エリア



その他の路線の情報:東山線 名城線 鶴舞線 桜通線 名港線