C# 如何在Windows窗体中以编程方式获取用户初始值

C# 如何在Windows窗体中以编程方式获取用户初始值,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我可以获取此文件夹: C:\Users\XXX\Documents 在我的代码之外: string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 我需要获取用户姓名首字母(XXX),是否有好的获取方法,比如MyDocuments 如果是这样的话,我更喜欢这种干净的方式,而不是从我的文件夹路径中选择用户名。您可以签出属性: string usern

我可以获取此文件夹:

C:\Users\XXX\Documents
在我的代码之外:

string myDocuments = 
                Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
我需要获取用户姓名首字母
(XXX)
,是否有好的获取方法,比如
MyDocuments

如果是这样的话,我更喜欢这种干净的方式,而不是从我的文件夹路径中选择用户名。

您可以签出属性:

string username = Environment.UserName;
您可以签出该属性:

string username = Environment.UserName;

使用
Environment.UserName
获取当前登录到Windows操作系统的用户的用户名。

使用
Environment.UserName
获取当前登录到Windows操作系统的用户的用户名。

Office应用程序询问和存储首字母缩写,而不是Windows 所以,和其他帖子一样,使用Environment.UserName

然后,使用此扩展方法检索首字母(取每个单词的第一个字母)

//
///删除任何特殊字符并返回所有单词的第一个字母
/// 
///从中检索首字母的字符串
/// 
公共静态字符串GetInitials(此字符串str)
{
if(string.IsNullOrEmpty(str))
返回str;
var空间=“”;
var-previousWasSpace=true;
var buffer=新字符[str.Length];
var指数=0;
foreach(str中的字符c)
{
if(c==空格)
{
previousWasSpace=true;
}
else if(previousWasSpace&&char.isleterordigit(c))
{
previousWasSpace=false;
缓冲区[索引]=c;
索引++;
}
}
返回新字符串(缓冲区,0,索引);
}

此方法很旧,可以对其进行优化

Office应用程序询问和存储首字母缩写,但不能使用windows 所以,和其他帖子一样,使用Environment.UserName

然后,使用此扩展方法检索首字母(取每个单词的第一个字母)

//
///删除任何特殊字符并返回所有单词的第一个字母
/// 
///从中检索首字母的字符串
/// 
公共静态字符串GetInitials(此字符串str)
{
if(string.IsNullOrEmpty(str))
返回str;
var空间=“”;
var-previousWasSpace=true;
var buffer=新字符[str.Length];
var指数=0;
foreach(str中的字符c)
{
if(c==空格)
{
previousWasSpace=true;
}
else if(previousWasSpace&&char.isleterordigit(c))
{
previousWasSpace=false;
缓冲区[索引]=c;
索引++;
}
}
返回新字符串(缓冲区,0,索引);
}

此方法很旧,可能会进行优化

这里有另一种从用户名中获取首字母的方法(在本例中按空格或句点拆分):


下面是另一种从用户名中获取首字母的方法(本例中按空格或句点分隔):


谢谢我甚至尝试了var user=Environment.SpecialFolder.UserProfile;在不远的地方问之前:)谢谢。我甚至尝试了var user=Environment.SpecialFolder.UserProfile;在不远的地方问之前:)
foreach (string s in Environment.UserName.Split(" .".ToCharArray()))
    userInitials += s.Substring(0,1).ToUpper();