在我的C#程序中,我试图让Panel按秒调用OnPaint()一次,根据当前设置进行一些图形绘制.主窗体使用System.Timers.Timer来调用Panel类的update方法,该方法以Refresh()调用结束.但是当我运行它时,我总是得到一个引用刷新行的InvalidOperationExcetpion,并说"从创建它的线程以外的线程访问的"跨线程操作无效:控制'." 它还引用了我的MSDN页面:http://msdn.microsoft.com/en-us/library/ms171728.aspx
但是该页面上的所有示例似乎都建议将新线程绑定到特定的表单事件.我正在更新基于计时器,而不是鼠标点击或类似的事件.在一个单独的线程上运行刷新对我来说听起来不错,但我不确定我是怎么做的(我很擅长Java,但是C#新手).
我从Jrista的帖子中回答了以下例子.
找到Twentyone计数
int[] numbers = new[] { 1, 3, 11, 21, 9, 23, 7, 4, 18, 7, 7, 3, 21 };
var twentyoneCount = numbers.Where(n => n == 21).Count();
Run Code Online (Sandbox Code Playgroud)
假设我使用"Func"委托如何获得计数?
我试过(原谅我的语法错误)
var otherway= Func <int> numbers= x => x==21;
Run Code Online (Sandbox Code Playgroud)
我正在构建一个通用文章框架,我的命名空间名称与我的实体发生冲突:
命名空间:MyCompany.Articles.Modules
类别:文章,文章
有关如何避免这种情况的任何建议?根据MS我应该使用以下格式:<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>].
谢谢.
当这是有效的:
string s4 = "H e l l o";
string[] arr = s4.Split(new char[] { ' ' });
foreach (string c in arr)
{
System.Console.Write(c);
}
Run Code Online (Sandbox Code Playgroud)
为什么这是无效的
string s4 = "H e l l o";
char[] arr = s4.Split(new char[] { ' ' });
foreach (char c in arr)
{
System.Console.Write(c);
}
Run Code Online (Sandbox Code Playgroud)
我们用Splitter方法构建一个字符数组.
我出于某种原因试图使用反射,我遇到了这个问题.
class Service
{
public int ID {get; set;}
.
.
.
}
class CustomService
{
public Service srv {get; set;}
.
.
.
}
//main code
Type type = Type.GetType(typeof(CustomService).ToString());
PropertyInfo pinf = type.GetProperty("Service.ID"); // returns null
Run Code Online (Sandbox Code Playgroud)
我的问题是我想在主要对象的另一个属性中获得一个属性.有这个目标的简单方法吗?
提前致谢.
这是我的代码片段:
let targetMeasure (usesPercent:Nullable<byte>) value =
match usesPercent.Value with
| 0 -> sprintf "$%A" value
| _ -> sprintf "%A%%" value
Run Code Online (Sandbox Code Playgroud)
尝试将"usesPercent"与0匹配,但0必须是一个字节.这总是让我在F#中感到困惑.我超越了可以为空的东西,但那时的值不是同一类型.我该如何解决这个问题?
Public Function ExecCommand(ByVal sql As String) As SqlDataReader
Dim dReader As SqlDataReader
Dim cmd As New SqlCommand()
cmd.CommandText = sql
cmd.Connection = sm
Dim isOpened = OpenConnection()
If isOpened Then
dReader = cmd.ExecuteReader()
CloseConnection()
End If
Return dReader
End Function
Run Code Online (Sandbox Code Playgroud)
它表示在运行时可能会发生空引用以声明该datareader.这是为什么?
我有一个Color类,它包含颜色的红色,绿色和蓝色通道的值.类构造函数允许您通过指定三个通道的值来创建新颜色.但是,为方便起见,我还想为程序员提供一些"预制"颜色.例如,而不是像
DrawRectangle(new Color(1, 0, 0));
Run Code Online (Sandbox Code Playgroud)
你可以说
DrawRectangle(Color.Red);
Run Code Online (Sandbox Code Playgroud)
Color.Red是Color类中的Color实例.如何在Color类中声明这些Color实例?如果有这种技术的名称,我想知道它,因为当我在网上寻求帮助时,我不知道要使用哪些搜索条件.
最近,我收到一位客户投诉,说我编写的一个小型 .NET 2.0 应用程序无法在他的 Windows 7 计算机上运行。
经过调查,发现c:\Windows\Microsoft.NET\Framework\v2.0.50727他的机器上没有文件夹,只有V4.0的文件夹。
我不知道这样的星座是可能的。
我的问题:
如果在客户端计算机上找不到 .NET 2 运行时,是否可以以某种方式指示我的应用程序使用 .NET 4 运行时?
我最近安装了 C++,以便重新学习该语言(已经完成了一些小项目)。真正让我烦恼的一件事是,实现时的自动完成功能不再起作用。
更具体地说,自动完成参数和函数名称。我已经在各自的标头中声明了我的类和函数。虽然我的记忆有点模糊,但我记得在2008年,一旦你在cpp文件中输入名称,它会自动给你一个相应参数的下拉框。
然后我搜索了论坛和页面以寻找可能的解决方案,并得知智能感知功能已从新的 VS 2010 中的 C++ 环境中删除(为什么?)。但可以通过以下方式检索参数列表:
(1) 检查“工具 -> 文本编辑器 -> C++ -> 自动列表成员”,并在高级选项卡中查看该功能是否已禁用。
(2) 使用 Ctrl-完成陈述时留出空格。
我已经尝试过这两种方法,但它们不起作用(并且我读过一些论坛,认为 ctrl+space 至少应该在某种程度上起作用)。声明应该是正确的,因为当我定义函数并右键单击并将名称命名为“转到声明”时,它将突出显示头文件中的声明(其中提供了整个参数列表)。Ctrl+J 会告诉我 VS 确实识别函数声明。
我不想使用第三方软件,例如(视觉辅助 X),但我已经没有选择了。
预先非常感谢您。