我正在编写一些代码来使用第三方组件,我需要提供一个在我开始使用它时实现ICredentials的对象.
如果我写以下内容......
var credential = new NetworkCredential("MyUsername", "MyPassword");
Run Code Online (Sandbox Code Playgroud)
...并通过"凭证",没关系.但我想传递当前用户的凭据(它是一个Windows服务,因此以指定用户身份运行).
我尝试了以下两种方法,但似乎都不起作用(或返回任何内容):
NetworkCredential credential = System.Net.CredentialCache.DefaultCredentials;
NetworkCredential credential = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何获取approriate对象,该对象代表运行该服务的用户名的凭据?
谢谢,罗斯
如果我想在两种Enum
类型之间进行转换,我希望它们的值具有相同的名称,是否有一个简洁的方法,或者我必须这样做:
enum colours_a { red, blue, green }
enum colours_b { yellow, red, blue, green }
static void Main(string[] args)
{
colours_a a = colours_a.red;
colours_b b;
//b = a;
b = (colours_b)Enum.Parse(typeof(colours_b), a.ToString());
}
Run Code Online (Sandbox Code Playgroud)
?
我有一个Winform应用程序,它使用颜色突出显示某些事物.我想让用户改变'他们'的颜色.作为练习,我想我会创建一个类的实例,其中包含颜色的属性,并将其分配给属性网格(以获得一个漂亮的编辑器).
这似乎工作正常,但我想我想让用户重置颜色(在他们摆弄并将它们设置为20个米色)之后.所以,我在表单中添加了一个"重置"按钮,它将我的对象的颜色属性设置回默认值.
但是,它似乎在设置我的对象属性时,属性网格不会改变.如果在重置后,我执行属性网格"刷新",它具有重置颜色.
我假设属性网格不知道底层对象已被更改?
在这种情况下是否缺少某些东西,或者我应该接受它并在重置对象时调用Refresh方法?
谢谢
(这里非常相似的问题)
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.propertyGrid1.SelectedObject = new Colours();
}
private void button1_Click(object sender, EventArgs e)
{
Colours colours = this.propertyGrid1.SelectedObject as Colours;
colours.Reset();
}
}
public partial class Colours : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public Color ColourP1 { get; set; }
public void Reset()
{
this.ColourP1 = Color.Red;
var handler = this.PropertyChanged;
if (handler != null) handler(this, new …
Run Code Online (Sandbox Code Playgroud) c# data-binding propertygrid inotifypropertychanged winforms
我已经搜索了一个在多列上对DataGridView进行排序的示例,但似乎无法找到符合我想要的示例.
基本上,我有一个绑定的DataGridView控件(绑定到DataTable/DataView),绑定的DataTable有两列: - priority和date.我想按优先顺序按日期排序.也就是说,优先级列采用优先级,然后是日期,但两者都可以是升序或降序.
因此,例如,我可能具有低优先级,早期日期优先(按优先级asc,日期asc排序),并且通过单击日期列标题,切换到低优先级,晚期日期优先(按优先级顺序asc,日期desc).如果我然后单击优先级,我希望首先具有高优先级,然后是较晚的日期(日期列的当前排序顺序 - 按优先级desc排序,日期desc),但是然后可以单击日期列标题切换到高优先级,早期日期(按优先级desc,日期asc排序).
理想情况下,我想在两列上对字形进行排序以显示升序或降序.
我们将非常感激地提出任何想法或建议.
这个(见下文)似乎非常接近,但字形无法正常工作.
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
DataSet1 dataset;
public Form1()
{
InitializeComponent();
dataset = new DataSet1(); // two columns: Priority(Int32) and date (DateTime)
dataset.DataTable1.AddDataTable1Row(1, DateTime.Parse("01-jan-10"));
dataset.DataTable1.AddDataTable1Row(1, DateTime.Parse("02-jan-10"));
dataset.DataTable1.AddDataTable1Row(1, DateTime.Parse("03-jan-10"));
dataset.DataTable1.AddDataTable1Row(2, DateTime.Parse("04-jan-10"));
dataset.DataTable1.AddDataTable1Row(2, DateTime.Parse("05-jan-10"));
dataset.DataTable1.AddDataTable1Row(2, DateTime.Parse("06-jan-10"));
dataset.DataTable1.AddDataTable1Row(3, DateTime.Parse("07-jan-10"));
dataset.DataTable1.AddDataTable1Row(3, DateTime.Parse("08-jan-10"));
dataset.DataTable1.AddDataTable1Row(3, DateTime.Parse("09-jan-10"));
dataGridView1.DataSource = dataset.DataTable1.DefaultView;
dataGridView1.AllowUserToAddRows = false;
dataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.Programmatic;
dataGridView1.Columns[1].SortMode = DataGridViewColumnSortMode.Programmatic; …
Run Code Online (Sandbox Code Playgroud) 为什么(如果有的话)这是一个坏主意?
class Program
{
static void Main(string[] args)
{
try
{
throw new NotImplementedException("Oh dear");
}
catch (Exception ex)
{
throw NewException("Whoops", ex);
}
}
// This function is the salient bit here
public static Exception NewException(String message, Exception innerException)
{
return Activator.CreateInstance(innerException.GetType(), message, innerException) as Exception;
}
}
Run Code Online (Sandbox Code Playgroud)
这里重要的一点是该函数创建了与"innerException"相同类型的异常.
我在想......"哦......发生了异常.我实际上无法在这里处理它,但我可以添加一些额外的信息,并重新抛出.也许是另一个处理程序,更高的调用链可以处理它."
一个恰当的例子可能是某种SQL错误.我可能无法在调用时处理异常,但可能希望添加一些额外的"上下文"信息,例如"我正在调用它,并传递它".
似乎将调用链作为最初引发的类型的异常传递回来可能是有用的,而不是"Exception"或"ApplicationException".我知道我可以创建自己的自定义异常类,但是当你已经有一个很好的特定异常时,它似乎没有增加任何东西.
当然,我可能错了.这可能是一件非常有用的事情......但是一个小小的声音暗示着没有.
-----编辑-----
为了辩论,请考虑以下两个函数的效果(使用上面的代码):
这......经常看到:
static int SalesTotal(int customerNumber)
{
try
{
throw new DivideByZeroException(); // something you didn't expect
}
catch (Exception ex)
{
throw new ApplicationException("Unable …
Run Code Online (Sandbox Code Playgroud) 如果之前有人问过,请道歉.我有一些数据需要存储为字符串,其中一些数据是日期.数据以"01/02/10" (英国格式)等字符串开头.现在,稍后,这个数据被解析,并且根据解析的不同,结果是不同的(例如,01-Feb-10对比02-Jan-10).鉴于数据以字符串形式开始,在我存储它之前,我想说,"如果这看起来像日期,请将其格式化为dd-mmm-yy".
麻烦的是很多东西看起来像是DateTime.Parse()函数的日期.
所以,我应用了一些规则,只为我的检查接受"合理的"日期格式,并写了一个IsDate()函数.我正在寻求关于如何做到这一点的建议,因为虽然它有效但我的解决方案看起来非常笨重.
如果你曾经开始在它上面抛出随机字符串(比如"3/4"和"6.12"),那么我做这个而不是按照常规的DateTime.TryParse例程的原因很明显.
这是我到目前为止所拥有的:
class Program
{
static void Main(string[] args)
{
Debug.Assert(IsDate(6.12) == false);
Debug.Assert(IsDate("3/4") == false);
Debug.Assert(IsDate(010210) == false);
Debug.Assert(IsDate("010210") == false);
Debug.Assert(IsDate("12-jan-2000") == true);
Debug.Assert(IsDate("12-12-20") == true);
Debug.Assert(IsDate("1/1/34") == true);
Debug.Assert(IsDate("09/30/20") == false);
Debug.Assert(IsDate(DateTime.Now) == true);
}
static Boolean IsDate(Object value)
{
DateTimeFormatInfo DateTimeFormatGB = new CultureInfo("en-GB").DateTimeFormat; // new CultureInfo("en-US").DateTimeFormat;
return IsDate(value, DateTimeFormatGB);
}
static private List<String> AcceptableDateFormats = new List<String>(72);
static Boolean IsDate(Object value, DateTimeFormatInfo formatInfo)
{
if (AcceptableDateFormats.Count == 0) …
Run Code Online (Sandbox Code Playgroud) 我想从Word文档中读取标题和主题字段,但是宁愿没有启动Word的开销。
如果在Windows资源管理器中显示标题和主题列,然后导航到其中包含Word文档的文件夹,则会显示此信息。使用什么机制来执行此操作(除了Shell扩展之外),因为它的速度很快(但是我不知道您是否真的需要安装Word才能运行此功能),所以我猜测它不会启动Word并打开每个文档。
我已经找到了我可以使用的Dsofile.dll链接,但这对.doc和.docx文件有用吗,这是唯一的方法吗?
c# ×6
.net ×1
data-binding ×1
datagridview ×1
datetime ×1
enums ×1
ms-office ×1
ms-word ×1
propertygrid ×1
sorting ×1
validation ×1
winforms ×1