小编Aus*_*nen的帖子

C# - 使用文本框编写日志

我是C#的新手(最近我遇到了RS-232问题),我正在尝试编写一个小应用程序,它在幕后执行各种任务,我想创建一个消息日志,以便让用户在应用程序的哪个阶段更新在.

日志只包含简单的一行消息.

我目前正在使用禁用的文本框,以便用户无法更改它.我显然可以使用行末尾的\ r \n字符来执行多个文本行,但是当我来写第二组消息时,它们会在文本框的开头写入,覆盖第一条消息.

我可以将其更改为追加而不是覆盖吗?此外,当文本超出框可以显示时,文本框是否会自动添加滚动条?

c# textbox

9
推荐指数
2
解决办法
2万
查看次数

有什么理由说明为什么C#中的三元有限?

失败:

object o = ((1==2) ? 1 : "test");
Run Code Online (Sandbox Code Playgroud)

成功:

object o;
if (1 == 2)
{
    o = 1;
}
else
{
    o = "test";
}
Run Code Online (Sandbox Code Playgroud)

第一个语句中的错误是:

无法确定条件表达式的类型,因为'int'和'string'之间没有隐式转换.

为什么需要这样,我将这些值分配给object类型的变量.

编辑:上面的例子是微不足道的,是的,但有一些例子,这将是非常有用的:

int? subscriptionID; // comes in as a parameter

EntityParameter p1 = new EntityParameter("SubscriptionID", DbType.Int32)
{
    Value = ((subscriptionID == null) ? DBNull.Value : subscriptionID),
}
Run Code Online (Sandbox Code Playgroud)

c# ternary-operator

9
推荐指数
2
解决办法
1127
查看次数

将文本字符串转换为十六进制表示或二进制表示

你好家伙简单的问题,我似乎被难倒.我有一些似乎有用的东西,但我得到一个空白的结果.我在数据库的列中有一个文本字符串.为了这个问题,我们可以说文本字符串是"jhonSmith"我想得到这个字符串的十六进制表示.使用sql server简单的select语句.我无权访问数据库上的创建或调用过程.这是最好的香港专业教育学院能够提出,但它返回空白.如果我关闭转换功能,那么它的工作原理.

select distinct convert (varbinary, dim_employee.full_name) as Employee
from dim_employee
where 1=1
Run Code Online (Sandbox Code Playgroud)

如果我使用varchar而不是varbinary我得到的数据有些让我相信我没有正确地做到这一点.有人能指出我正确的方向.请!!!

sql-server

9
推荐指数
1
解决办法
2万
查看次数

使用SmtpClient时"操作超时"

我正在尝试使用C#框架创建一个小应用程序来发送电子邮件.但是,它不起作用.该应用程序总是给我"操作超时".我不是为什么.

这是我的代码:

private void button1_Click(object sender, EventArgs e)
   {
     MailAddress fromAddress = new MailAddress("from@gmail.com");
     MailAddress toAddress = new MailAddress("to@gmail.com");

     MailMessage mail = new MailMessage(fromAddress.Address, toAddress.Address);
     mail.Subject = "Testing";
     mail.Body = "contents.";

     SmtpClient client = new SmtpClient();
     client.Host = "smtp.gmail.com";
     client.Port = 587;
     client.EnableSsl = true;
     client.Timeout = 100;
     client.UseDefaultCredentials = false;
     client.Credentials = new NetworkCredential("username", "password");

     try
        {
            client.Send(mail);
            MessageBox.Show("Mail Sent!", "Success", MessageBoxButtons.OK);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK);
        }

    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# email gmail smtp

9
推荐指数
1
解决办法
4万
查看次数

C#:返回给定对象和方法名称的委托

假设我有一个对象和一个包含方法名称的字符串,我该如何将委托返回给该方法(该方法?)?

例:

MyDelegate GetByName(ISomeObject obj, string methodName)
{
    ...
    return new MyDelegate(...);
}

ISomeObject someObject = ...;
MyDelegate myDelegate = GetByName(someObject, "ToString");

//myDelegate would be someObject.ToString
Run Code Online (Sandbox Code Playgroud)

提前致谢.

还有一件事 - 我真的不想使用switch语句,即使它可以工作但是需要很多代码.

c# reflection

8
推荐指数
1
解决办法
2万
查看次数

使用c#将txt打印到默认打印机

有没有办法使用c#将.txt发送到打印机?

就像是

string doc = "c:\temp.txt";
sendToPrinter(doc);
Run Code Online (Sandbox Code Playgroud)

c# printing

8
推荐指数
4
解决办法
2万
查看次数

SQL档案脚本

我正在尝试将记录从数据库中的表归档到归档数据库中的相同表.我需要能够为日期大于三年的所有记录执行插入操作,然后删除这些行.但是,这个表有数百万个实时记录,所以我希望一次以大约100到1000个块的循环运行它.到目前为止,我的存储过程执行整个insert语句,然后执行delete语句(在事务中),其中与insert语句具有基本相同的WHERE子句.我的WHILE循环正在查找表中最早的日期,以确定循环何时完成.其中一些似乎效率很低.有没有一种方法可以在记录块上进行插入和删除,而无需在同一循环执行中查找它们两次?有没有更好的方法来确定WHILE语句何时完成?运行MS SQL Server 2000.

这是我目前的程序(ISAdminDB是主数据库,ISArchive是存档数据库):

    WHILE ( (SELECT MIN( [MyTable].[DateTime]) FROM  [ISAdminDB].[dbo].[MyTable]) < DATEADD(d, -(3 * 365), GetDate()))
BEGIN

INSERT INTO [ISArchive].[dbo].[MyTable] 
(<Fields>)
SELECT TOP 1000 (<Fields>)
FROM  [ISAdminDB].[dbo].[MyTable]
WHERE 
   [MyTable].[DateTime] < DATEADD(d, -(3 * 365), GetDate())
AND  UniqueID in (SELECT TOP 1000 UniqueID  FROM  [ISAdminDB].[dbo].[MyTable] ORDER BY [MyTable].[DateTime] ASC )

BEGIN TRAN
DELETE FROM  [ISAdminDB].[dbo].[MyTable]
WHERE   [MyTable].[DateTime] < DATEADD(d, -(3 * 365), GetDate()) 
AND  (UniqueID in (SELECT TOP 1000 UniqueID FROM  [ISAdminDB].[dbo].[MyTable] ORDER BY [MyTable].[DateTime] ASC))
COMMIT

END
Run Code Online (Sandbox Code Playgroud)

sql sql-server performance stored-procedures

8
推荐指数
1
解决办法
5634
查看次数

C#,WinForms:ListBox.Items.Add生成一个OutOfMemoryException,为什么?

首先,我找到了异常的解决方案.我更好奇为什么它产生了它所做的特定异常.

在我的场景中,我正在向ListBox中添加一个POCO,如下所示:

myListBox.Items.Add(myPOCO);
Run Code Online (Sandbox Code Playgroud)

这产生了一个OutOfMemoryException.问题是ToStringPOCO正在返回null.我添加了一个string.IsNullOrEmpty检查,以便在null时返回"安全"值,异常消失.

为什么这会生成一个OutOfMemoryException而不是其他东西(比如说a NullReferenceException)?

编辑:项目在for循环中添加.

完整的调用堆栈(已删除公司特定的引用)如下所示.有一点需要注意 - 调用它时列表框为空.

System.OutOfMemoryException was unhandled
  Message="List box contains too many items."
  Source="System.Windows.Forms"
  StackTrace:
       at System.Windows.Forms.ListBox.NativeAdd(Object item)
       at System.Windows.Forms.ListBox.ObjectCollection.AddInternal(Object item)
       at System.Windows.Forms.ListBox.ObjectCollection.Add(Object item)
       at <FORM>_Load(Object sender, EventArgs e) in <PATH>\<FORM>.cs:line 52
       at System.Windows.Forms.Form.OnLoad(EventArgs e)
       at System.Windows.Forms.Form.OnCreateControl()
       at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
       at System.Windows.Forms.Control.CreateControl()
       at System.Windows.Forms.Control.WmShowWindow(Message& m)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
       at System.Windows.Forms.ContainerControl.WndProc(Message& m)
       at System.Windows.Forms.Form.WmShowWindow(Message& m)
       at …
Run Code Online (Sandbox Code Playgroud)

c# winforms

8
推荐指数
2
解决办法
5914
查看次数

C#Response.WriteFile与Response.TransmitFile文件大小问题

我在服务器上有一个5Mb的pdf,使用writeFile下载这个文件给我一个15Mb的下载,其中transmitfile给出正确的5Mb文件大小...

这是由于writeFile服务器上的某种内存未压缩?只是想知道是否有人看到同样的事情发生...

(ps因为我们去了iis7才发现它?)

代码是......

if (File.Exists(filepath))
{
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.ContentType = "application/octet-stream";
    HttpContext.Current.Response.AddHeader("content-disposition","attachment;filename=\""+Path.GetFileName(filepath)+"\"");
    HttpContext.Current.Response.AddHeader("content-length", new FileInfo(filepath).Length.ToString());

    //HttpContext.Current.Response.WriteFile(filepath);
    HttpContext.Current.Response.TransmitFile(filepath);

    HttpContext.Current.Response.Flush();
    HttpContext.Current.Response.Close();
}
Run Code Online (Sandbox Code Playgroud)

c# transmitfile

8
推荐指数
1
解决办法
2万
查看次数

实例化类型列表<>的属性

我在我的类中创建了List类型的属性

public List<string> CategoryRef { get; set; }
Run Code Online (Sandbox Code Playgroud)

现在,当我想在列表中添加一个字符串时,我尝试了

Product p=new Product();
p.CategoryRef.Add("Nick");
Run Code Online (Sandbox Code Playgroud)

编译器对我大吼,说对象没有设置为对象的实例.如何实例化一个属性?

c#

8
推荐指数
1
解决办法
5782
查看次数