C#.use(better, IronPython=”WPF”) 《記事一覧》
《承前》
〓 リストボックス ListBox
リスト項目を操作すると、選択した色を表示します。
マークアップ:部品を配置する
Green
リストボックス ListBox を識別できるように Name="listBox" を指定するとともに、各リスト項目 ListBoxItem には、色名を表わす文字列(Green など)を指定します。
分離コード:イベントハンドラーを設定する
self._listBox.SelectionChanged += self.selectionChanged
リストボックスは、イベント SelectionChanged に呼応して、イベントハンドラー selectionChanged を起動します。
def selectionChanged(self, sender, e):
s = sender.SelectedItem.Content
self._textBox.Text = s
self._colorBox.Background = getattr(Brushes, s)
イベントハンドラー selectionChanged では、選択したリスト項目に合わせて、表示色を再設定します。ここでは、色の名前(各リスト項目の値)を使って、色情報を管理します。
〓 ラジオボタン RadioButton
ラジオボタンを操作すると、選択した色を表示します。
分離コード:イベントハンドラーを設定する
for e in "RGB":
getattr(self, e).Checked += self.checked
ラジオボタンは、イベント Checked に呼応して、イベントハンドラー checked を起動します。
def checked(self, sender, e):
s = sender.Content
self._textBox.Text = s
self._colorBox.Background = getattr(Brushes, s)
イベントハンドラー checked では、選択したボタンに合わせて、表示色を再設定します。ここでは、色の名前(各ボタンの値)を使って、色情報を管理します。
〓 スライダー Slider
スライダーを操作すると、選択した色を(各成分を調整して)表示します。
分離コード:イベントハンドラーを設定する
for e in "RGB":
getattr(self, e).MouseMove += self.mouseMove
スライダーは、イベント MouseMove に呼応して、イベントハンドラー mouseMove を起動します。
def mouseMove(self, sender, e):
s = sender.Value
self._textBox.Text = `s`
self._colorBox.Background = self._backgroundColor()def _backgroundColor(self):
color = {}
for e in "RGB":
color[e] = int(getattr(self, e).Value)
return SolidColorBrush(
Color.FromRgb(color["R"], color["G"], color["B"]))
イベントハンドラー mouseMove では、スライダーの動きに合わせて、表示色を再設定します。ここでは、色の成分(各スライダーの値)ごとに、色情報を管理します。
《Point》C# の隘路:メタボリック症候群にご用心 C# のようなハイブリッド型の OOP 言語では、属性、メソッド、プロパティーなど、同じ概念を実現するのにさまざまな構文規則が規定されています。そのため、コードが肥大化する傾向(メタボリック症候群)にあります。Python に限らず、純粋な OOP 言語では、これらを包括する概念モデルがその背景にあるので、より洗練されたコードを記述できます。□