0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IronRubyでWPFのウィンドウを表示する

Last updated at Posted at 2018-10-20

概要

IronRubyを使い、WPFのウィンドウを表示するサンプルコードを掲載します。

環境

Windows 8.1(64ビット)
IronRuby 1.1

コード

コードは次の通りです。

wpf_show_window_01.rb
# coding: utf-8

require 'PresentationFramework'

include System::Windows

window = Window.new
window.title = "IronRuby"

app = Application.new
app.run(window)

実行方法

[1] DOS窓を開き、wpf_show_window_01.rbを実行します

> "C:\Program Files (x86)\IronRuby 1.1\bin\ir.exe" wpf_show_window_01.rb

[2] 実行すると空のウィンドウが表示されます。スクリプトを終了するにはウィンドウの×ボタンを押します

wpf_show_window_01_result.PNG

応用

ウィンドウにボタンを追加します。

wpf_show_window_02.rb
# coding: utf-8

require 'PresentationFramework'

include System::Windows
include System::Windows::Controls

window = Window.new
window.title = "IronRuby"
window.Width="300"
window.Height="300"

button = Button.new
button.MinWidth = 150
button.Content = "あいさつ"
window.Content = button

button.Click do |sender, e|
	MessageBox.Show("こんにちは")
end

app = Application.new
app.run(window)

このコードを実行するとボタンが1つだけあるウィンドウが表示されます。
ボタンを押すと、"こんにちは"と書かれたダイヤログが出ます。

wpf_show_window_02_result.PNG

WPFはXamlというXMLファイルに画面のレイアウトを作ることが多いですが、それもできます。
また、ここではWPFの話をしましたが、Formも利用可能です。

何がうれしいの?

IronRubyだけインストールした環境でGUIのプログラムが作れることです。つまり、導入が楽ということです。
RubyであればRuby-GNOME2などのGUIライブラリがありますが、追加のライブラリです。

実はこの記事は「IronRubyでExcelのマクロを実行する」というテーマの一環として作成しました。
Excelのマクロ実行環境はGUIエディタが付属しており、直感的にGUIを作成することができますが、この代わりの機能としてWPFを選択したというわけです。

なぜExcelのマクロ実行環境のGUIエディタを使わないのかというと、作られたウィンドウはリサイズすらできないなど柔軟性が低く、多少複雑なGUIを作ろうとしたときに行き詰る危険性があったからです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?