我正在拼凑一个快速的C#win表单应用程序,以帮助解决重复的文书工作.
我已在AD中为所有用户帐户执行搜索,并将其添加到带有复选框的列表视图中.
我想默认listviewitems的默认检查状态取决于帐户的启用/禁用状态.
string path = "LDAP://dc=example,dc=local";
DirectoryEntry directoryRoot = new DirectoryEntry(path);
DirectorySearcher searcher = new DirectorySearcher(directoryRoot,
"(&(objectClass=User)(objectCategory=Person))");
SearchResultCollection results = searcher.FindAll();
foreach (SearchResult result in results)
{
DirectoryEntry de = result.GetDirectoryEntry();
ListViewItem lvi = new ListViewItem(
(string)de.Properties["SAMAccountName"][0]);
// lvi.Checked = (bool) de.Properties["AccountEnabled"]
lvwUsers.Items.Add(lvi);
}
Run Code Online (Sandbox Code Playgroud)
我正在努力找到正确的属性进行解析以从DirectoryEntry对象获取帐户的状态.我搜索了AD用户属性,但没有找到任何有用的东西.
谁能提供任何指针?
尽管我多年来一直使用C#(Windows Forms),但我有一个大脑失败的时刻,并且在我的生活中无法弄清楚如何捕获用户在文本框中键入Ctrl+ C.
我的应用程序基本上是一个终端应用程序,我希望Ctrl+ C发送(byte)3
一个串口,而不是复制到剪贴板的快捷方式.
我enabled
在文本框中将快捷方式属性设置为false.然而,当用户点击Ctrl+时C,按键事件不会触发.
如果我抓住keydown,则当用户按下时Ctrl(即,在他们按下C键之前)事件将触发.
我很遗憾,这可能是一件非常简单的事情.
我必须使用数组进行练习.用户必须输入3个输入(每次输入有关项目的信息),输入将插入到数组中.然后我必须显示数组.
但是,我很难在不改变其中的信息的情况下增加阵列的长度; 以及如何允许用户输入另一组输入?这是我到目前为止:
public string stockNum;
public string itemName;
public string price;
string[] items = new string[3];
public string [] addItem(string[] items)
{
System.Console.WriteLine("Please Sir Enter the stock number");
stockNum = Console.ReadLine();
items.SetValue(stockNum, 0);
System.Console.WriteLine("Please Sir Enter the price");
price = Console.ReadLine();
items.SetValue(price, 1);
System.Console.WriteLine("Please Sir Enter the item name");
itemName = Console.ReadLine();
items.SetValue(itemName, 2);
Array.Sort(items);
return items;
}
public void ShowItem()
{
addItem(items);
Console.WriteLine("The stock Number is " + items[0]);
Console.WriteLine("The Item name is " + items[2]);
Console.WriteLine("The price …
Run Code Online (Sandbox Code Playgroud) 我的WinForms应用程序有一个TextBox,我将其用作日志文件.我正在附加没有使用闪烁形式的文本TextBox.AppendText(string);
,但是当我尝试清除旧文本时(因为控件的.Text属性达到.MaxLength限制),我得到了可怕的闪烁.
我正在使用的代码如下:
public static void AddTextToConsoleThreadSafe(TextBox textBox, string text)
{
if (textBox.InvokeRequired)
{
textBox.Invoke(new AddTextToConsoleThreadSafeDelegate(AddTextToConsoleThreadSafe), new object[] { textBox, text });
}
else
{
// Ensure that text is purged from the top of the textbox
// if the amount of text in the box is approaching the
// MaxLength property of the control
if (textBox.Text.Length + text.Length > textBox.MaxLength)
{
int cr = textBox.Text.IndexOf("\r\n");
if (cr > 0)
{
textBox.Select(0, cr + 1);
textBox.SelectedText = string.Empty;
} …
Run Code Online (Sandbox Code Playgroud) 我正在使用PHP在我们公司的Intranet上开发一个内部Web应用程序.应用程序的一部分向用户显示几个高分辨率图像.这些图像的面积为5000x3500像素.每个图像都有一个图像映射(使用矩形区域),并且在我尝试过的桌面浏览器中一切正常.
我发现的问题是,当用户通过他们的iOS设备访问网站时,图像将通过设备上的safari重新调整,但图像地图坐标不会被调整以匹配.
我的PHP生成的HTML示例如下:
<img src="largeimage.jpg" width="5000" height="3500" usemap="#examplemap">
<map name="examplemap">
<area shape="rect" coords="0,0,5000,500" href="blah1"/>
<area shape="rect" coords="0,500,2500,3500" href="blah2"/>
<area shape="rect" coords="2500,500,5000,3500" href="blah3"/>
</map>
Run Code Online (Sandbox Code Playgroud)
(图像映射中的实际矩形坐标计算为图像大小的百分比).
我知道safari正在调整图像大小,因为设备上存在内存限制,但我需要找到一种缩放图像映射以适应的方法,或者用其他可以完成相同工作的其他东西替换图像映射.任何人都可以提供任何建议吗?
我有一个简单的数据库表(SQL Server 2008 R2 Express),其定义如下:
ID INT Auto Inc, PK
Name VARCHAR(64) Unique Key
Telephone VARCHAR(128)
Run Code Online (Sandbox Code Playgroud)
我有一个存储过程,我执行以更新表中的记录,基本上执行以下操作:
UPDATE customers
SET Name = @name, Telephone = @Telephone
WHERE id = @id
Run Code Online (Sandbox Code Playgroud)
目前,我在表中有两个条目
ID Name Telephone
1 Fred 01234 567890
2 John 09876 543210
Run Code Online (Sandbox Code Playgroud)
当我调用我的存储过程更新John的电话号码时,有效执行的SQL是
UPDATE customers
SET Name = 'John', Telephone = '02468 135790'
WHERE id = 2
Run Code Online (Sandbox Code Playgroud)
这会在Name
字段上生成UNIQUE KEY违规.现在,由于Name字段实际上没有变化,为什么会出现这种情况?
由于我的应用程序正在使用存储过程处理所有数据库操作,我可以通过删除约束来修复此问题,并修改存储过程以手动强制执行约束,但这似乎是错误的.
鉴于我的表实际上有更多的字段,我必须有一个通用的工作来防止这些错误的约束问题,而不必生成大量的存储过程来更新特定的字段?
编辑:上面的表格被简化以保持问题更易于管理,我很确定我没有错过任何重要的内容,但是对于信息,表格的实际定义如下
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[companies]( …
Run Code Online (Sandbox Code Playgroud) 我正在开发的内部应用程序在Windows 7(64位)PC上表现得很奇怪.
如果我创建一个PrintDialog的实例,并调用它的ShowDialog()方法,该方法立即返回DialogResult.Cancel而不显示打印机对话框窗体.
Windows 7 PC确实安装了打印机(带有可用的默认打印机).
PrintDialog printDialog = new PrintDialog();
printDialog.PrinterSettings.Copies = 2;
printDialog.AllowCurrentPage = false;
printDialog.AllowPrintToFile = false;
printDialog.AllowSelection = false;
printDialog.AllowSomePages = false;
DialogResult dialogResult = printDialog.ShowDialog(this);
if (dialogResult == DialogResult.Cancel)
return;
Run Code Online (Sandbox Code Playgroud)
任何线索为什么会发生这种情况?
我有一个将在触摸屏系统上使用的应用程序,它包含许多相当大的按钮(~100px square).
每个按钮将有1到4行文本(通常每行一个单词).
由于按钮中有大量的填充,我不得不减小文本的大小,使其变得几乎不可读,但是如果我能够减少内部填充,那么文本将直接绘制到边框那我就不会有问题了.
我试图将控件的填充减少到零,如下所示,但它没有帮助.
this.Text = _label;
this.Font = new Font(this.Font.FontFamily, (float) _size);
this.Padding = new Padding(0);
Run Code Online (Sandbox Code Playgroud)
问题的一个示例如下所示:
正如您所看到的,"OVERVIEW"这个词有足够的空间放在一行上,但是如何在不缩小字体大小的情况下实现这一目标呢?我不喜欢不得不重写控件的文本绘画代码.
编辑:我注意到将填充增加到高达300的各种值,对控件的内部填充没有任何影响.另外,对于信息,我正在使用的按钮是我从Windows.Forms.Button类继承的控件,因为我需要添加一些属性,但是我没有干涉任何Button自己的方法.
我今天早些时候提出了一个问题(管理源代码的方法),因为我对管理共享库的源代码的方式不满意.作为答案的结果,我找到了一个更好的方法.
我现在正在通过我的存储库整理所有源代码,但结果我现在有了另一个问题......
虽然我还在开发一个软件,但是引用库的调试版本是否更好(冒着在以后忘记用发布版本替换它的风险)?
或者换句话说,如果我引用库的发布版本,如果我的软件的调试版本崩溃,它会限制调试吗?
c# projects-and-solutions shared-libraries visual-studio-2008
我意识到你可以使用hat字符在批处理文件中转义&符号
例如
echo a ^& b
a & b
Run Code Online (Sandbox Code Playgroud)
但我正在使用该命令
for /f "tokens=*" %%A IN ('DIR /B /A-D /S .acl') DO ProcessACL.cmd "%%A"
Run Code Online (Sandbox Code Playgroud)
它查找当前目录中名为".acl"的所有文件,或当前目录的子目录.
问题是,我找到包含'&'字符的路径名(不,它们不能重命名),我需要一种方法来自动转义&符号并使用转义路径调用第二个批处理文件参数.
rem ProcessACL.cmd
echo %1
Run Code Online (Sandbox Code Playgroud)