我是C#的新手(最近我遇到了RS-232问题),我正在尝试编写一个小应用程序,它在幕后执行各种任务,我想创建一个消息日志,以便让用户在应用程序的哪个阶段更新在.
日志只包含简单的一行消息.
我目前正在使用禁用的文本框,以便用户无法更改它.我显然可以使用行末尾的\ r \n字符来执行多个文本行,但是当我来写第二组消息时,它们会在文本框的开头写入,覆盖第一条消息.
我可以将其更改为追加而不是覆盖吗?此外,当文本超出框可以显示时,文本框是否会自动添加滚动条?
失败:
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) 你好家伙简单的问题,我似乎被难倒.我有一些似乎有用的东西,但我得到一个空白的结果.我在数据库的列中有一个文本字符串.为了这个问题,我们可以说文本字符串是"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我得到的数据有些让我相信我没有正确地做到这一点.有人能指出我正确的方向.请!!!
我正在尝试使用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)
谢谢!
假设我有一个对象和一个包含方法名称的字符串,我该如何将委托返回给该方法(该方法?)?
例:
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#将.txt发送到打印机?
就像是
string doc = "c:\temp.txt";
sendToPrinter(doc);
Run Code Online (Sandbox Code Playgroud) 我正在尝试将记录从数据库中的表归档到归档数据库中的相同表.我需要能够为日期大于三年的所有记录执行插入操作,然后删除这些行.但是,这个表有数百万个实时记录,所以我希望一次以大约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) 首先,我找到了异常的解决方案.我更好奇为什么它产生了它所做的特定异常.
在我的场景中,我正在向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) 我在服务器上有一个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) 我在我的类中创建了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
sql-server ×2
.net ×1
email ×1
gmail ×1
performance ×1
printing ×1
reflection ×1
smtp ×1
sql ×1
textbox ×1
transmitfile ×1
winforms ×1