private static void UpdateInfoFromFileName(UltraID3 uid3, string regExpr, string userRegExpString)
        {
            try
            {
                Regex trackinfoRegexp = new Regex(regExpr, RegexOptions.Singleline);
                ///TODO: string _t = ComboBox_ExtractTagsFromFNmane.Text;

                SortedList ht = new SortedList();
                if (userRegExpString.IndexOf(RE_ARTIS) != -1)
                {
                    ht.Add(userRegExpString.IndexOf(RE_ARTIS), RE_ARTIS);
                }
                if (userRegExpString.IndexOf(RE_TRACKNR) != -1)
                {
                    ht.Add(userRegExpString.IndexOf(RE_TRACKNR), RE_TRACKNR);
                }
                if (userRegExpString.IndexOf(RE_ALBUM) != -1)
                {
                    ht.Add(userRegExpString.IndexOf(RE_ALBUM), RE_ALBUM);
                }
                if (userRegExpString.IndexOf(RE_YEAR) != -1)
                {
                    ht.Add(userRegExpString.IndexOf(RE_YEAR), RE_YEAR);
                }
                if (userRegExpString.IndexOf(RE_TITLE) != -1)
                {
                    ht.Add(userRegExpString.IndexOf(RE_TITLE), RE_TITLE);
                }



                foreach (Match m in trackinfoRegexp.Matches(uid3.FileName))
                {
                    IEnumerator enHt = ht.Keys.GetEnumerator();

                    for (int i = 1; i < m.Groups.Count; i++)
                    {
                        enHt.MoveNext();
                        int   key = (int)enHt.Current;
                        Group g   = m.Groups[i];
                        try
                        {
                            switch (ht[key].ToString())
                            {
                            case RE_TITLE:
                                uid3.Title          = g.Value;
                                uid3.ID3v1Tag.Title = g.Value;
                                uid3.ID3v2Tag.Title = g.Value;
                                break;

                            case RE_ARTIS:
                                uid3.Artist          = g.Value;
                                uid3.ID3v1Tag.Artist = g.Value;
                                uid3.ID3v2Tag.Artist = g.Value;
                                break;

                            case RE_ALBUM:
                                uid3.Album          = g.Value;
                                uid3.ID3v1Tag.Album = g.Value;
                                uid3.ID3v2Tag.Album = g.Value;
                                break;

                            case RE_TRACKNR:
                                try{
                                    uid3.SetTrackNum(g.Value);
                                }catch {}
                                try{
                                    uid3.ID3v1Tag.SetTrackNum(g.Value);
                                }
                                catch { }
                                try
                                {
                                    uid3.ID3v2Tag.SetTrackNum(g.Value);
                                }
                                catch { }
                                break;

                            case RE_YEAR:
                                uid3.SetYear(g.Value);
                                uid3.ID3v1Tag.SetYear(g.Value);
                                uid3.ID3v2Tag.SetYear(g.Value);
                                break;
                            }
                        }
                        catch { }
                    }
                }
                uid3.Write();
            }
            catch { }
        }
        private static void UpdateInfoFromFileName(UltraID3 uid3, string regExpr, string userRegExpString)
        {
            try
            {
                Regex trackinfoRegexp = new Regex(regExpr, RegexOptions.Singleline);
                ///TODO: string _t = ComboBox_ExtractTagsFromFNmane.Text;

                SortedList ht = new SortedList();
                if (userRegExpString.IndexOf(RE_ARTIS) != -1) ht.Add(userRegExpString.IndexOf(RE_ARTIS), RE_ARTIS);
                if (userRegExpString.IndexOf(RE_TRACKNR) != -1) ht.Add(userRegExpString.IndexOf(RE_TRACKNR), RE_TRACKNR);
                if (userRegExpString.IndexOf(RE_ALBUM) != -1) ht.Add(userRegExpString.IndexOf(RE_ALBUM), RE_ALBUM);
                if (userRegExpString.IndexOf(RE_YEAR) != -1) ht.Add(userRegExpString.IndexOf(RE_YEAR), RE_YEAR);
                if (userRegExpString.IndexOf(RE_TITLE) != -1) ht.Add(userRegExpString.IndexOf(RE_TITLE), RE_TITLE);

                foreach (Match m in trackinfoRegexp.Matches(uid3.FileName))
                {
                    IEnumerator enHt = ht.Keys.GetEnumerator();

                    for (int i = 1; i < m.Groups.Count; i++)
                    {
                        enHt.MoveNext();
                        int key = (int)enHt.Current;
                        Group g = m.Groups[i];
                        try
                        {
                            switch (ht[key].ToString())
                            {
                                case RE_TITLE:
                                    uid3.Title = g.Value;
                                    uid3.ID3v1Tag.Title = g.Value;
                                    uid3.ID3v2Tag.Title = g.Value;
                                    break;

                                case RE_ARTIS:
                                    uid3.Artist = g.Value;
                                    uid3.ID3v1Tag.Artist = g.Value;
                                    uid3.ID3v2Tag.Artist = g.Value;
                                    break;

                                case RE_ALBUM:
                                    uid3.Album = g.Value;
                                    uid3.ID3v1Tag.Album = g.Value;
                                    uid3.ID3v2Tag.Album = g.Value;
                                    break;

                                case RE_TRACKNR:
                                    try{
                                        uid3.SetTrackNum(g.Value);
                                    }catch{}
                                    try{
                                        uid3.ID3v1Tag.SetTrackNum(g.Value);
                                    }
                                    catch { }
                                    try
                                    {
                                        uid3.ID3v2Tag.SetTrackNum(g.Value);
                                    }
                                    catch { }
                                    break;

                                case RE_YEAR:
                                    uid3.SetYear(g.Value);
                                    uid3.ID3v1Tag.SetYear(g.Value);
                                    uid3.ID3v2Tag.SetYear(g.Value);
                                    break;

                            }
                        }
                        catch { }

                    }
                }
                uid3.Write();
            }
            catch { }
        }