我正在尝试为Label Control设置禁用的字体特征.我可以设置所有字体特征(大小,粗体等),但颜色被默认的窗口行为覆盖,这似乎是这两种颜色之一:
下图显示了行为 - 第1列是标签,第2列是文本框,第3列是组合框.

编辑 - 解释图像:前两行是标签,文本框和组合框的默认样式.在后两行中,我将背景颜色设置为红色,将前景颜色设置为白色.Microsoft处理的禁用字体样式不一致.
我需要创建一些RichText并将其复制到剪贴板,标准的"格式化"如粗体/斜体,缩进等.我现在这样做的方式看起来有点不雅......我正在创建一个RichTextBox项并通过它来应用我的格式:
RichTextBox rtb = new RichTextBox();
Font boldfont = new Font("Times New Roman", 10, FontStyle.Bold);
rtb.Text = "sometext";
rtb.SelectAll()
rtb.SelectionFont = boldfont;
rtb.SelectionIndent = 12;
Run Code Online (Sandbox Code Playgroud)
必须有一个更好的方法,但经过几个小时的搜索,我无法想出更好的东西.有任何想法吗?
编辑:RichTextBox(rtb)不会在表单上的任何位置显示/绘制.我只是使用该对象来格式化我的RichText.
我正在为Web应用程序编写一个日志文件查看器,为此我想通过日志文件的行分页.文件中的项目是基于行的,底部是最新项目.
所以我需要一种tail()方法,可以n从底部读取行并支持偏移量.我想出的是这样的:
def tail(f, n, offset=0):
"""Reads a n lines from f with an offset of offset lines."""
avg_line_length = 74
to_read = n + offset
while 1:
try:
f.seek(-(avg_line_length * to_read), 2)
except IOError:
# woops. apparently file is smaller than what we want
# to step back, go to the beginning instead
f.seek(0)
pos = f.tell()
lines = f.read().splitlines()
if len(lines) >= to_read or pos == 0:
return lines[-to_read:offset and -offset or None]
avg_line_length …Run Code Online (Sandbox Code Playgroud) 我有一个单线程应用程序,它使用以下命令在运行时加载多个程序集:
objDLL = Assembly.LoadFrom(strDLLs[i]);
Run Code Online (Sandbox Code Playgroud)
我希望以这种方式加载的程序集使用与其余程序集相同的log4net.ILog引用.但似乎运行时加载的程序集完全具有不同的引用,并且需要自己的配置.有没有人知道是否可以在运行时使用.NET接口加载的程序集中使用单个log4net.ILog?
以下是Program类中的log4net.ILog创建和支持代码:
// Configure log4net using the .config file
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
public static class Program
{
private static log4net.ILog m_Log = null;
[STAThread]
public static void Main(string[] args)
{
try
{
m_Log = log4net.LogManager.GetLogger(
MethodBase.GetCurrentMethod().DeclaringType);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序跟踪大约1000个对象的状态.这些对象以无特定顺序从持久存储(序列化)读取和写入.
现在,应用程序使用注册表来存储每个对象的状态.这很好,因为:
很简单
它非常快
可以读取/写入单个对象的状态,而无需读取更大的实体(例如从大型XML文件中提取片段)
有一个像样的编辑器(RegEdit),可以轻松操作单个项目
话虽如此,我想知道是否有更好的方法.SQLite似乎是一种可能性,但是您没有使用注册表获得的同一级别的多读者/多作者,并且没有简单的方法来编辑现有条目.
有更好的建议吗?一堆平面文件?
我在一个文件上运行git-diff,但更改是在一个长行的末尾.
如果我使用光标键向右移动它会丢失颜色编码,更糟糕的是线条不会排列,这使得跟踪更改变得更加困难.
有没有办法防止这个问题,或简单地换行换行?
(通过mingw32运行git 1.5.5)
在任何使用错误消息(或其他用户消息)的应用程序中,我通常都会对字符串进行硬编码.显然这可能非常糟糕(特别是当你可能不得不回来并本地化应用程序时).集中这些字符串的最佳方法是什么?一个静态类?常量?一个XML文件?或者组合(比如创建一个带有常量的静态类,用于从xml文件中读取).
比方说,我想写一个正则表达式来改变这一切<abc>,<def>和<ghi>标签为<xyz>标签..我也想改变自己的结束标记</xyz>.这似乎是一个合理的正则表达式(忽略反引号;如果我不包含它们,则StackOverflow会出现小于号的问题):
`s!<(/)?(abc|def|ghi)>!<${1}xyz>!g;`
Run Code Online (Sandbox Code Playgroud)
它也有效.唯一的问题是,对于打开标签,可选的$ 1变量被赋予undef,因此我得到一个"使用未初始化的值..."警告.
解决这个问题的优雅方法是什么?我宁愿不把它变成两个单独的正则表达式,一个用于打开标签,另一个用于关闭标签,因为那时需要维护两个标签列表副本,而不是一个.
编辑:我知道我可以在代码的这个区域关闭警告,但我不认为"优雅".
我们有一个包含ActiveX WebBrowser控件的Windows应用程序.作为此应用程序的常规操作的一部分,将对ActiveX WebBrowser控件显示的页面进行修改.部分修改涉及在加载到ActiveX WebBrowser中的网页中设置JavaScript变量.
我们需要在C#中初始化这个变量(最初,VB6代码正在初始化值).此变量的值是COM可见的类对象.
但是,为简单起见,我们将问题缩小为设置字符串值.我们的原始页面涉及框架等,但在这样的页面中出现相同的问题:
<HTML>
<HEAD>
<TITLE>Test</TITLE>
<SCRIPT type="text/javascript">
var field = 'hello world';
</SCRIPT>
</HEAD>
<BODY>
<input type="button" value="See field" onclick="javascript:alert(field);"/>
</BODY>
</HTML>
Run Code Online (Sandbox Code Playgroud)
我们想要访问字段变量并为其赋值.在VB6中,代码非常简单:
doc.Script.field = 'newValue'
Run Code Online (Sandbox Code Playgroud)
但是,在C#中我们不得不求助于其他技巧,如下所示:
Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet(Script, null, "field",new object[] { "newValue"},null, null);
Run Code Online (Sandbox Code Playgroud)
页面的要点是测试我们的变量是否由C#正确分配.单击该按钮应该产生C#注入的任何新值.因此,例如,单击页面中的按钮,我们会收到一条警告:"newValue".
这是第一次工作,但如果我们重新加载页面它不起作用.在后续调用中,我们无法设置变量的值field.
以前有没有人有过做这种操作的经验?
没有真正得到地图功能的重点.任何人都可以用例子解释它的用途吗
使用它而不是循环是否有任何性能优势,还是只是糖?