/// <summary> /// 画面の表示状態を更新します /// </summary> private void updateStatus() { int old_select = listPresets.SelectedIndex; listPresets.SelectedIndices.Clear(); // アイテムの個数に過不足があれば数を整える int size = mHandles.Count; int delta = size - listPresets.Items.Count; #if DEBUG sout.println("FormVibratoPreset#updateStatus; delta=" + delta); #endif if (delta > 0) { for (int i = 0; i < delta; i++) { listPresets.Items.Add(""); } } else if (delta < 0) { for (int i = 0; i < -delta; i++) { listPresets.Items.RemoveAt(0); } } // アイテムを更新 for (int i = 0; i < size; i++) { VibratoHandle handle = mHandles[i]; listPresets.Items[i] = handle.getCaption(); } // 選択状態を復帰 if (size <= old_select) { old_select = size - 1; } #if DEBUG sout.println("FormVibratoPreset#updateStatus; A; old_selected=" + old_select); #endif if (old_select >= 0) { #if DEBUG sout.println("FormVibratoPreset#updateStatus; B; old_selected=" + old_select); #endif listPresets.SelectedIndex = old_select; } }
public void textName_TextChanged(Object sender, EventArgs e) { if (mSelected == null) { return; } mSelected.setCaption(textName.Text); int index = listPresets.SelectedIndex; if (index >= 0) { listPresets.Items[index] = mSelected.getCaption(); } }
public void listPresets_SelectedIndexChanged(Object sender, EventArgs e) { // インデックスを取得 int index = listPresets.SelectedIndex; #if DEBUG sout.println("FormVibratoPreset#listPresets_SelectedIndexChanged; index=" + index); #endif // 範囲外ならbailout if ((index < 0) || (mHandles.Count <= index)) { #if DEBUG sout.println("FormVibratoPreset#listPresets_SelectedIndexChanged; bail-out, mSelected -> null; index=" + index); #endif mSelected = null; return; } // イベントハンドラを一時的に取り除く textDepth.TextChanged -= new EventHandler(textDepth_TextChanged); textRate.TextChanged -= new EventHandler(textRate_TextChanged); textName.TextChanged -= new EventHandler(textName_TextChanged); // テクストボックスに値を反映 mSelected = mHandles[index]; textDepth.Text = mSelected.getStartDepth() + ""; textRate.Text = mSelected.getStartRate() + ""; textName.Text = mSelected.getCaption(); // イベントハンドラを再登録 textDepth.TextChanged += new EventHandler(textDepth_TextChanged); textRate.TextChanged += new EventHandler(textRate_TextChanged); textName.TextChanged += new EventHandler(textName_TextChanged); // 再描画 repaintPictures(); }