テキストエディタで作るWindows Forms
プログラミングC#では、Visual Studioを使ってやることになっているのですが、エディタで作ってみたかったので、とりあえずVisual C# 2008 Expressでソースを吐かせて、そいつを改造するっていうスタイルで作ってみました。
ちなみに、partialキーワードを使って、画面のデザイン部分と、イベントハンドラその他もろもろ部分とを分けているようです。Generation Gapパターンみたいですね。
ところでソース。
using System; using System.Windows.Forms; public class Form1 : Form { public Form1() { Button btn = new Button(); btn.Text = "Button"; btn.Click += this.button1_Click; this.Controls.Add(btn); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Hello, World!"); } static void Main(string[] args) { //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } }
Mainの一行目と二行目は、必要そうな感じだったんですが、コメントアウトしても普通に動きました。デフォルトが効いているのかな?詳しくは分かりません。。
こんなんでもちゃんとウインドウが表示されて、ボタンを押すとポップアップが出ます。
ついでに、久々にSwingとか書いてみる。
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class WForm extends JFrame { public WForm() { JButton btn = new JButton("button"); btn.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog((Component )e.getSource(), "Hello, World!"); } } ); add(btn); // ×ボタンを押した時にプログラムが終了するようにするオマジナイ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(250, 250); } public static void main(String[] args) { WForm form = new WForm(); form.setVisible(true); } }
Swingなのに、awtのパッケージもimportしなきゃならんのは見苦しいなあ。
いや、しかし懐かしい。
C#の方がデリゲートでイベント処理記述できる分、すっきりしてますね。