IronPython事始め

コモンダイアログボックス

コモンダイアログボックスにはいろいろありますが、ここではOpenFileDialogを使ってみます。 CSVファイルの指定がコードで行なわれていた部分で、任意のファイルを指定できるように作り替えてみました。

1. 画面キャプチャ

実行するとOpenFileDialogが起動し、CSVファイルの入力を促します。

$alt $alt

2. サンプルコード:ダイアログボックによる入力ファイルの指定

今回は次のような新しいCSVファイルを読み込ませる事にしました。

07_form_filedialog.csv

name,age,address,phone
yasu,20,AizuWakamatsu,22-xxxx
abe,25,Yokohama,982-xxxx
hoge,30,somewhere,xxx-xxxx

CSVファイルを変数filenameに指定する部分を書き換えて次のようになりました。 CSVファイルを処理する部分は変更していません。

07_form_filedialog.ipy

# coding=Shift_JIS
# IronPython Example:  OpenFileDialog + DataGridView
# - 
# @author: YasuhiroABE <yasu@yasundial.org>
# @see: OpenFileDialog Class Example from MSDN API Reference
#
import clr
clr.AddReferenceByPartialName("System.Windows.Forms")
clr.AddReferenceByPartialName("System.Drawing")
clr.AddReferenceByPartialName("System.Data")
import System
from System.Windows.Forms import Form
from System.Windows.Forms import DataGridView
from System.Windows.Forms import DockStyle
from System.Data import DataTable
from System.IO import StreamReader
from System.Drawing import Size
from System.Windows.Forms import OpenFileDialog
from System.Windows.Forms import DialogResult
from System.Windows.Forms import MessageBox

form = Form()
form.Size = Size(400,180)
form.Text = "Hello World!"

## 静的にファイル名を指定します
#filename = "05_form_databinding.csv"
filename = ""
fdialog = OpenFileDialog()
fdialog.InitialDirectory = "C:\\IronPython26"
fdialog.Filter = "CSV file (*.csv)|*.csv|All files (*.*)|*.*"
fdialog.FilterIndex = 1
fdialog.RestoreDirectory = True
if fdialog.ShowDialog() == DialogResult.OK:
  filename = fdialog.FileName
else:
  MessageBox.Show("Please input proper filename.","Error Dialog")
  sys.exit(1)

## setup DataTable object
dt = DataTable()
reader = StreamReader(filename)
cols = []
for c in reader.ReadLine().split(","):
  dt.Columns.Add(c, System.Type.GetType("System.String"))
  cols.append(c)
  
l = reader.ReadLine()
while(l != None):
  row = dt.NewRow()
  counter = 0
  for item in l.split(","):
    row[cols[counter]] = item
    counter += 1
  dt.Rows.Add(row)
  l = reader.ReadLine()
reader.Close()

## setup DataGridView object
datagridview = DataGridView()
datagridview.DataSource = dt
datagridview.Dock = DockStyle.Fill
datagridview.Size = form.Size

form.Controls.Add(datagridview)
System.Windows.Forms.Application.Run(form)
## end ##

Created: 2010-03-11, Last modified: 2010-03-19

2009,2010 © Yasuhiro ABE <yasu@yasundial.org>

Valid XHTML + RDFa RDFa it (RDF/XML)!

正当なCSSです!

Creative Commons License www.yasundial.org by Yasuhiro ABE is licensed under a Creative Commons Attribution 2.1 Japan License. Permissions beyond the scope of this license may be available at http://www.yasundial.org/info/license.html.