当前位置:编程学习 > C#/ASP.NET >>

就90分了 全散 5个问题 精通WinForm的都进来拿分

最近忙其他考试了 小弟C#是自学的  以下是今阶段遇到的问题  路过的朋友帮我看下:


1.[微软没提供重命名注册表项的函数  说要通过先删再写的方法实现 可小弟还是不是太明白]: 

   比如把“HKEY_LOCAL_MACHINE\SOFTWARE\3721”改成
  “HKEY_LOCAL_MACHINE\SOFTWARE\gotohel”而不管其下还有什么键值  全部保留原样
  (请您附C# code说明)


2.[listview中的项按名称排序]:

  比如:我在程序中将我电脑上"D:\音乐" 下所有的音频文件名都保存到listview中的item中 那么怎样实现按名称排序呢?
  就想你某个目录下右击鼠标都有个"排列图标"-->"名称" 或者"大小","修改时间"之类的在保存到listview中时也做到按名排列
  要考虑中文名称的 例如有两首歌:一个名称是"不.mp3",另一个名称是"啊.mp3"  那么listview中items[0].text="啊.mp3";  items[1].text="不.mp3"; (请您附C# code说明) 

3.[如何判断回收站是否有东西并清空]:

   比如WinForm上一个Button 点击一下自动判断回收站内是否有东西 如果有弹出个MessageBox说发现回收站有东西  问是否清空回收站 如果点了"是" 就自动清空回收站 (和在桌面的回收站处右击"清空回收站"一样的效果)(请您附C# code说明)


4.[椭圆形button的实现]:

  想做个个性按钮 是椭圆形的 功能和一般的Button一样 就形状变下 是否需要重写Button的哪些属性(请您附C# code说明) 

5.[启动Outlook并填入地址]:

  C# WinForm中 一个Button 点击一下就自动启动Outlook  并在发信界面上自动填好了收件人的地址  提供用户问题反馈的功能
  (请您附C# code说明)


    积累了一个月  问题比较多了  挑您知道的写就行了  由于小弟就这么多积分了  请学长们不吝赐教  谢谢 --------------------编程问答-------------------- 关注下,一个都没有搞过 --------------------编程问答-------------------- 好有深度
还都要附上代码 --------------------编程问答-------------------- 哎,积累了1个月,估计一天内你都全部搞完了……  你就是没动手对不? --------------------编程问答-------------------- #region 注册表的操作
/// <summary>
/// 把值写入注册表中
/// </summary>
/// <param name="scodestr">写入的值</param>
public static void WriteToRegistry(int flag,string scodestr)
{
RegistryKey regWrite = null;
try
{
regWrite = Registry.CurrentUser.CreateSubKey(@"Software\ItelClient");   
object strvalue = (object)scodestr;
if(flag==1)
{
regWrite.SetValue("itelname",strvalue);      
}
else
{
regWrite.SetValue("isLogin",scodestr);
}
}
catch
{
throw new Exception("写入注册出错!");
}
finally
{
regWrite.Close();
}
}

/// <summary>
/// 从注册表中读取值
/// </summary>
/// <returns></returns>
public static string ReadToRegistry(int flag)
{
string str = "";
RegistryKey regRead = null; 
try
{  
regRead = Registry.CurrentUser.OpenSubKey(@"Software\ItelClient",true);   
if(regRead!=null)    
{
object obj = null;
if(flag==1)
                        obj = regRead.GetValue("itelname");
else
obj = regRead.GetValue("isLogin");

str = obj.ToString();

}
catch
{
str = "";
// throw new Exception("读取注册表出错!");
}
finally
{
if(regRead!=null)
regRead.Close();
}

return str;
}
#endregion --------------------编程问答-------------------- 清空回收站建议看下:http://www.cn-mpa.com/stu/c/300004420/ --------------------编程问答-------------------- marks



4:imagebutton控件,其他跟BUTTON差不多

5:系统设置默认的是OE,BUTTON触发,在EMAIL里面设置好收件人地址即可


其他等待高手 --------------------编程问答-------------------- 2.Listview有排序属性sorting,可以排升序,降序,无序
listView1.Sorting = SortOrder.Ascending;

4.插入一张椭圆形PNG格式的图片,双击,替换另一张PNG图片
private void pictureBox1_Click(object sender, EventArgs e)
  {
    pictureBox1.Image="2.png";
  } --------------------编程问答-------------------- 第一个  RegistryKey

第2个 
ListViewColumnSorter sor = new ListViewColumnSorter(e.Column);
            listView1.ListViewItemSorter = sor;
            listView1.Sorting = listView1.Sorting == SortOrder.Descending ? SortOrder.Ascending : SortOrder.Descending;
            listView1.Sort();

public class ListViewColumnSorter : IComparer
        {

            int index;
            /// </summary>
            public ListViewColumnSorter(int x)
            {
                index = x;
            }

            /// <summary>
            /// This method is inherited from the IComparer inte易做图ce.  It compares the two objects passed using a case insensitive comparison.
            /// </summary>
            /// <param name="x">First object to be compared</param>
            /// <param name="y">Second object to be compared</param>
            /// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns>
            public int Compare(object x, object y)
            {
                int compareResult;
                ListViewItem listviewX, listviewY;

                // Cast the objects to be compared to ListViewItem objects
                listviewX = (ListViewItem)x;
                listviewY = (ListViewItem)y;

                // Compare the two items
                return compareResult = -string.Compare(listviewX.SubItems[index].Text, listviewY.SubItems[index].Text);


            }




        }



3.[如何判断回收站是否有东西并清空]: 
 在C#中,回收站的操作可以通过调用Win32   API来实现。以下是两个回收站操作(删除文件到回收站,以及清空回收站)的例子代码:   
    
    
  1.   把一个文件删除到Recycle   Bin中   
    
  using   System.Runtime.InteropServices;   
    
  private   const   int   FO_DELETE   =   3;   
  private   const   int   FOF_SILENT   =     0x0004;   
  private   const   int   FOF_NOCONFIRMATION   =     0x0010;   
  private   const   int   FOF_ALLOWUNDO   =   0x0040;   
  private   const   int   FOF_NOCONFIRMMKDIR   =   0x0200;   
    
  [StructLayout(LayoutKind.Sequential)]   
  private   struct   SHFILEOPSTRUCT   
  {   
  public   int   hwnd;   
  public   int   wFunc;   
  public   string   pFrom;   
  public   string   pTo;   
  public   int   fFlags;   
  public   bool   fAnyOperationsAborted;   
  public   int   hNameMappings;   
  public   string   lpszProgressTitle;   
  }   
    
  [DllImport("shell32.dll")]   
  private   static   extern   int   SHFileOperation(ref   SHFILEOPSTRUCT   FileOp);   
    
  ///   <example>   
  /// Delete("c:\\test.txt",true);   //把"c:/test.text"删除到回收箱   
  ///   </example>   
  private   static   int   Delete(string   sPath,bool   recycle)   
  {   
  SHFILEOPSTRUCT   FileOp   =   new   SHFILEOPSTRUCT();   
  FileOp.hwnd   =   0;   
  FileOp.wFunc   =   FO_DELETE;   
  FileOp.fFlags=0;   
  FileOp.fFlags   =   FileOp.fFlags   |   FOF_SILENT;   
  FileOp.fFlags   =   FileOp.fFlags   |   FOF_NOCONFIRMATION;   
  FileOp.fFlags   =   FileOp.fFlags   |   FOF_NOCONFIRMMKDIR;   
  if   (recycle)   
  {   
  FileOp.fFlags   =   FileOp.fFlags   |   FOF_ALLOWUNDO;   
  }   
  FileOp.pFrom   =   sPath   +   "\0";   
  return   SHFileOperation(ref   FileOp);   
  }   
    
    
    
  2.   清空Recycle   Bin   
    
    
  [Flags()]   
  enum   SHERB   
  {   
  SHERB_NOCONFIRMATION   =   0x00000001,   
  SHERB_NOPROGRESSUI       =   0x00000002,   
  SHERB_NOSOUND                 =   0x00000004   
  }   
    
  [DllImport("shell32.dll",   CharSet=CharSet.Auto)]   
  static   extern   uint   SHEmptyRecycleBin(   
  IntPtr   hwnd,   
  string   pszRootPath,   
  SHERB   dwFlags);   
    
  ///   <example>   
  /// Empty(@"c:\");   //清空C:盘的回收站   
  ///   </example>   
  private   static   void   Empty(string   path)   
  {   
  SHEmptyRecycleBin(IntPtr.Zero,   path,   SHERB.SHERB_NOCONFIRMATION   );   
  }   
   

   比如WinForm上一个Button 点击一下自动判断回收站内是否有东西 如果有弹出个MessageBox说发现回收站有东西  问是否清空回收站 如果点了"是" 就自动清空回收站 (和在桌面的回收站处右击"清空回收站"一样的效果)(请您附C# code说明) 


4.[椭圆形button的实现]: 没有写过。。。。

  想做个个性按钮 是椭圆形的 功能和一般的Button一样 就形状变下 是否需要重写Button的哪些属性(请您附C# code说明)  

5.[启动Outlook并填入地址]: 
System.Diagnostics.Process.Start(@"C:\Program Files\Outlook Express\msimn.exe", "-c IPM.Note /m myfriend@hotmail.com&subject=Hello");
  C# WinForm中 一个Button 点击一下就自动启动Outlook  并在发信界面上自动填好了收件人的地址  提供用户问题反馈的功能 
  (请您附C# code说明) 

补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,