就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#