/// <summary> /// ディレクトリの間の位置の文字列を作る /// </summary> /// <param name="name">文字列</param> /// <param name="position">位置</param> /// <returns></returns> private bool MakeBetweenDirName(ref string name, ref IMG_DIRLEVEL position) { IMG_DIRLEVEL [] aDir; IMG_DIRLEVEL tmpDir; int i; if (position.Level != 0) { tmpDir = position; aDir = new IMG_DIRLEVEL[position.Level]; for (i = position.Level - 1; i >= 0; i--) { aDir[i] = tmpDir; tmpDir = tmpDir.Parent; } for (i = 0; i < position.Level; i++) { name += aDir[i].DirName; name += @"\"; } aDir = null; } return(true); }
/// <summary> /// ディレクトリの文字列をセット /// </summary> /// <returns>何もなければtureを返す</returns> private bool ComboBoxDataSet() { cbDir.Items.Clear(); //DeleteImgDirLevel(m_rImgDirLv); m_startImageDir = new IMG_DIRLEVEL(); m_startImageDir.Level = 0; m_startImageDir.Next = null; m_startImageDir.NextLevel = null; m_startImageDir.Parent = null; m_startImageDir.DirName = null; m_startImageDir.DirName += @".\"; m_startImageDir.Level = 0; if (!DirectorySearch(ref m_startImageDir.NextLevel, ref m_startImageDir)) { return(false); } // 項目をComboBoxExに反映させる m_dirNum = 0; SetComboBoxItem(ref m_startImageDir); return(true); }
/// <summary> /// 最終階層までディレクトリを探索し、コンボボックスに反映させる /// </summary> /// <param name="rImgDirLv"></param> /// <param name="rParent"></param> /// <returns></returns> private bool DirectorySearch(ref IMG_DIRLEVEL rImgDirLv, ref IMG_DIRLEVEL rParent) { IMG_DIRLEVEL firstTmpDir = null, tmpDir = null; string fileFolder; tmpDir = rParent; // fileFolder = CommonMC2D.Instance.DirPathMC2D; fileFolder += @"\Media\images\"; MakeBetweenDirName(ref fileFolder, ref rParent); //strFileFolder += "*.*"; //DirectoryInfoを作成 DirectoryInfo di = new DirectoryInfo(fileFolder); //パスを指定 //ディレクトリ一覧の取得 DirectoryInfo[] dis = di.GetDirectories("*.*"); //パターンを指定 for (int i = 0; i < dis.Length; i++) { //---- ディレクトリのデータを取得する // そして作成 tmpDir = new IMG_DIRLEVEL(); tmpDir.Level = rParent.Level + 1; tmpDir.Next = null; tmpDir.NextLevel = null; tmpDir.Parent = rParent; tmpDir.DirName = dis[i].Name; if (i == 0) { firstTmpDir = tmpDir; } //---- 次の層のディレクトリを読み込む if (!this.DirectorySearch(ref tmpDir.NextLevel, ref tmpDir)) { return(false); } tmpDir = tmpDir.Next; } rImgDirLv = firstTmpDir; return(true); }
/// <summary> /// 一つ上のそうのディレクトリに戻る /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void UpDir_Click(object sender, EventArgs e) { string fileFolder; m_rDirLvTarget = m_rDirLvTarget.Parent; // ディレクトリが初期位置になったら if (m_rDirLvTarget.Level == 0) { btnHome.Enabled = false; } fileFolder = @".\"; m_betweenDir = ""; MakeBetweenDirName(ref m_betweenDir, ref m_rDirLvTarget); fileFolder += m_betweenDir; btnHome.Text = fileFolder; btnHome.ImageIndex = 0; SearchImageFile(); }
/// <summary> /// IMG_DIRLEVELのデータから、ComboBoxExに項目を反映させる /// </summary> /// <param name="parentImageDir"></param> /// <returns></returns> private bool SetComboBoxItem(ref IMG_DIRLEVEL parentImageDir) { ComboboxItem item = new ComboboxItem(); item.Text = parentImageDir.DirName; item.IndentLevel = parentImageDir.Level; item.Item = parentImageDir; cbDir.Items.Add(item); ++m_dirNum; if (parentImageDir.NextLevel != null) { SetComboBoxItem(ref parentImageDir.NextLevel); } if (parentImageDir.Next != null) { SetComboBoxItem(ref parentImageDir.Next); } cbDir.SelectedIndex = 0; return(true); }