1:桌面应用程序:怎么关联文件?<序列化一个文件.自己的格式,然后自己的程序去关联,就是双击它--就能打开> 先来个简单的 .txt 个是讲解一下!谢谢!
2:桌面应用程序:怎么遍历文件夹(遍历文件夹里边的文件(但是文件夹里边包含文件夹...还不晓得包含多少层!)) 
3:桌面应用程序:LIstView不是很好用能不能自己重新定义一个?自定义控件?
谁写过或是源代码 可以的话拿来看看!

解决方案 »

  1.   


    关联文件就是在注册表里注册一个文件类型,然后指定打开该类文件的应用程序即可,然后在程序中,Main入口函数里的参数(string[] args)就是双击文件后的文件名,
    具体代码如下(以下是注册一个*.BGEMAP文件,双击*.BGEMAP文件会启动该程序):
            // 注册文件类型
            private void RegistFileType()
            {
                try
                {
                    string applicationPath = Application.ExecutablePath;                RegistryKey rootKey = Registry.ClassesRoot;
                    RegistryKey key_BGEMAP = rootKey.CreateSubKey(".BGEMAP");
                    key_BGEMAP.SetValue("", "BGEMAP_File_Hype", RegistryValueKind.String);                RegistryKey key_BGEMAP_File_Hype = rootKey.CreateSubKey("BGEMAP_File_Hype");
                    RegistryKey key_Shell = key_BGEMAP_File_Hype.CreateSubKey("Shell");
                    RegistryKey key_Shell_Open = key_Shell.CreateSubKey("Open");
                    RegistryKey key_Shell_Open_Command = key_Shell_Open.CreateSubKey("Command");
                    key_Shell_Open_Command.SetValue("", applicationPath + " \"%1\"", RegistryValueKind.String);
                    key_Shell_Open_Command.Close();
                    key_Shell_Open.Close();
                    RegistryKey key_Shell_Edit = key_Shell.CreateSubKey("Edit");
                    RegistryKey key_Shell_Edit_Command = key_Shell_Edit.CreateSubKey("Command");
                    key_Shell_Edit_Command.SetValue("", applicationPath + " \"%1\"", RegistryValueKind.String);
                    key_Shell_Edit_Command.Close();
                    key_Shell_Edit.Close();
                    key_Shell.Close();                RegistryKey key_DefaultIcon = key_BGEMAP_File_Hype.CreateSubKey("DefaultIcon");
                    key_DefaultIcon.SetValue("", applicationPath + ",1", RegistryValueKind.String);
                    key_DefaultIcon.Close();                key_BGEMAP_File_Hype.Close();                rootKey.Close();
                }
                catch
                {
                    MessageBox.Show("注册文件类型失败。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
    启动该程序后,打开该文件:
    static void Main(string[] args)
    {
    string fileName=args[0];
    // 对fileName进行操作,
    }
      

  2.   


    2.递归就行了:
            private void LoadSubDrives(TreeNode tn)
            {
                string[] directorys = Directory.GetDirectories(tn.Tag.ToString());            tn.Nodes.Clear();
                foreach (string directory in directorys)
                {
                    TreeNode tn2 = new TreeNode();
                    tn2.Text = Path.GetFileName(directory);
                    tn2.ImageIndex = 1;
                    tn2.SelectedImageIndex = 1;
                    tn2.Tag = directory;                tn.Nodes.Add(tn2);
                    LoadSubDrives(tn2);
                }
            }3.A.定义全局变量,相关说明见使用《数据集和数据适配器》。  private DataSet dataSet = new DataSet();  // 声明并初始化DataSet  private SqlDataAdapter dataAdapter;    // 声明DataAdapter  B.填充DataGridView窗体 string teacherSql = "SELECT TeacherID,LoginId,LoginPwd,TeacherName,Sex,BirthDay FROM Teacher";//查询语句按题目要求自行确定// 初始化DataAdapter,使用合适的查询字符串   dataAdapter = new SqlDataAdapter(teacherSql, DBHelper.connection);          // 填充DataSet,填充进去的表名字按实际题目自行定义 dataAdapter.Fill(dataSet, "Teacher");// 绑定DataGridView的数据源 dgvTeacher.DataSource = dataSet.Tables["Teacher"];C.修改后保存修改DataGridView窗体中内容到数据库中SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter);//自动生成对应的SQL语句dataAdapter.Update(dataSet, "Teacher");//提交到数据库中,如果dataSet中有多个表,那么"Teacher"就是指定提交那个表的数据给数据库d.如果需要按其他条件重新查询一些信息填到DataGridView窗体中:// 先把到DataGridView窗体中的内容全部清除掉dataSet.Tables["Student"].Clear();// 重新指定DataAdapter 对象的查询语句,此前要修改SQL查询语句dataAdapter.SelectCommand.CommandText = sql;// 重新填充数据集dataAdapter.Fill(dataSet, "Student");