有没有办法让表单主动控制?
我正在检查"Support.GetActiveControl"方法的帮助,但不支持:)用于Compact Framework.
我想我可以通过向GotFocus所有表单控件添加自定义事件处理程序来跟踪焦点,但我正在寻找一种可以为任何表单实现的更通用的方法.
我是C#的新手.我有一个文本框,我输入要搜索的文件和"搜索"按钮.在搜索时钟我希望它填充文件夹中的文件,但我得到上述错误.以下是我的代码:
string[] directories = Directory.GetDirectories(@"d:\",
"*",
SearchOption.AllDirectories);
string file = textBox1.Text;
DataGrid dg = new DataGrid();
{
var files = new List<string>();
foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady))
{
try
{
files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, file , SearchOption.AllDirectories));
}
catch(Exception ex)
{
MessageBox.Show("the exception is " + ex.ToString());
//Logger.Log(e.Message); // Log it and move on
}
}
Run Code Online (Sandbox Code Playgroud)
请帮我解决一下.谢谢
我有一个简单的Process.Start命令,将powershell路径作为输入
Process.Start(powerShellPath);
Thread.Sleep(5000); //wait till loading is done, typically a couple of seconds
Run Code Online (Sandbox Code Playgroud)
但是现在我Thread.Sleep要等到powershell完全准备好为止(准备好了,我的意思是这样:您可以键入/发送某些内容并且它可以响应,但是我们可以在向键入/发送任何内容之前就知道这一点powershell)。
powershell除了等待之外,是否有其他方法可以知道是否准备就绪-即不是通过基于时间的逻辑而是通过基于事件的逻辑?
如果我们想向 a 添加一行DataGridView,除了添加一个DataGridViewRow对象之外,我们还可以通过传递一个对象数组 ( object[])来实现
dgv.Rows.Add(objArray); //objArray is of type object[]
Run Code Online (Sandbox Code Playgroud)
但是,如果我们想向 a 添加一定范围的行DataGridView,则不能通过IEnumerable<object[]>,而只能通过DataGridViewRow[]
dgv.Rows.AddRange(ienumObjArray); //not allowed, ienumObjArray is of type IEnumerable<object[]>
dgv.Rows.AddRange(dgvRows); //allowed, dgvRows is DataGridViewRow[]
Run Code Online (Sandbox Code Playgroud)
我的问题:是否有任何方法可以强制IEnumerable<object[]>转换DataGridViewRow[](如果可以使用 LINQ),以便我们可以执行类似的操作
dgv.Rows.AddRange(ienumObjArray.DoSomethingWithLinq(x => doSomething));
Run Code Online (Sandbox Code Playgroud)
并且不需要object[]一一添加?
foreach(object[] objArray in ienumObjArray)
dgv.Rows.Add(objArray); //adding one by one, is it possible to get rid this of?
Run Code Online (Sandbox Code Playgroud)
编辑:
这是完成于WinForms
编辑2:
应用@abatishchev的建议(没有AddRange),我遇到了奇怪的结果。如果我输入:
ienumObjArray.Select(objArr => dgv.Rows.Add(objArr));
Run Code Online (Sandbox Code Playgroud)
或者
var result = …Run Code Online (Sandbox Code Playgroud) 我正在使用EF 6.0.0.0和ODP.Net Oracle.ManagedDataAccess版本创建一个MVC应用程序来4.121.2.0进行数据访问.
在我的Controller调用中EmployeeController,我有以下代码片段:
public ActionResult Details(int id) {
try {
EmployeeContext employeeContext = new EmployeeContext();
Employee employee = employeeContext.Employees.Single(x => x.Id == id); //Here the exception occurs!
return View(employee);
} catch (Exception e) {
return View(e);
}
}
Run Code Online (Sandbox Code Playgroud)
当我加载Employee/Details.cshtml页面时,我得到以下例外:
"执行命令定义时发生错误.有关详细信息,请参阅内部异常."
在内部异常中,它说:
ORA-00942:表或视图不存在
这让我很困惑,因为在我的Oracle数据库中,该表肯定存在(我使用Toad for Oracle检查):
该connectionString数据库本身是我使用的其他项目,我在哪里可以查询从数据库中的数据没有困难相同的连接字符串.
以下是我的Employee类在以下方面的声明Models/Employee.cs:
using System.ComponentModel.DataAnnotations.Schema;
.
.
.
[Table("TBLEMPLOYEE")] //the same table name
public class Employee {
public int …Run Code Online (Sandbox Code Playgroud) c# oracle asp.net-mvc entity-framework oracle-manageddataaccess
我试图用另一个词替换一个词的出现:
word_list = { "ugh" : "disappointed"}
tmp = ['laughing ugh']
for index, data in enumerate(tmp):
for key, value in word_list.iteritems():
if key in data:
tmp[index]=data.replace(key, word_list[key])
print tmp
Run Code Online (Sandbox Code Playgroud)
而这有效...... ughin的出现laughing也在输出中被替换:ladisappointeding disappointed.
如何避免这种情况,以便输出是laughing disappointed?
我一直在阅读很多关于为什么构造函数是有用的,并且我发现的所有资源都指定构造函数用于初始化类的实例.使用构造函数的一个主要好处是它保证对象在使用之前将经过适当的初始化,通常接受参数.它有助于确保对象的完整性,并有助于使用面向对象语言编写的应用程序更加可靠.
默认情况下,如果在类中未指定构造函数,则会在C#中实例化默认的空构造函数.
我发现的大多数例子都指明了这样的东西;
public Car(int speedCurrent, int gearCurrent) {
speed = speedCurrent;
gear= startGear;
}
Car myCar = new Car(0, 0);
Run Code Online (Sandbox Code Playgroud)
现在,当您可以指定属性时,创建构造函数的实际意义是什么;
public int speed { get; set; }
public int gear { get; set; }
Run Code Online (Sandbox Code Playgroud)
并像这样初始化它;
Car myCar = new Car();
myCar.speed = 0;
myCar.gear = 0;
Run Code Online (Sandbox Code Playgroud)
我不能满足于明确创建构造函数的需要.如果有人能给我一个很好的实际例子,我将不胜感激.
在其中ASP.Net MVC 5 View,当控件/输入View尝试在数据库中创建列值(或中的字段值class)时,会弹出一个自动错误消息,该值应该是唯一的,但我们违反了它-例如在创建新用户时帐户的电子邮件以及已经存在的电子邮件,如下所示。
现在,我应该在我的项目中将上面的错误消息更改为本地语言:
... is already taken <-> ... [is already taken in local language]
Run Code Online (Sandbox Code Playgroud)
如何更改“ [[字段值]已采取””(自动)错误消息?
根据这篇文章:
我们可以尝试在整个解决方案中搜索“名称{0}已被使用”,但是当我这样做时,我找不到它。
这是早先的有效解决方案,MVC但过时了MVC 5吗?
(注意:不幸的是,该帖子并未指出OP正在使用哪个ASP.Net MVC版本)
是否可以使用CSS在HTML /中创建"不可丢弃的组"?例如,如果我有一个像这样的简单元素:
<div>
Name: <input type="text"><span>Item</span>
</div>
Run Code Online (Sandbox Code Playgroud)
给定足够的大小(宽度),它将呈现如下:
但是如果宽度变得太小,Item标签和标签TextBox将会"掉落"在Name标签下面,如下所示:
是否可以创建行为,当宽度较小时,文本框大小将被调整,但标签将保留在文本框的左侧和右侧而不是"丢弃"?
例证:
On large screen:
Name: | |Item
On small screen:
Name: | |Item
Run Code Online (Sandbox Code Playgroud)
如果必须使用Javascript,我也可以使用建议的答案Javascript.
c# ×8
winforms ×3
asp.net-mvc ×2
asp.net ×1
constructor ×1
css ×1
datagridview ×1
html ×1
javascript ×1
linq ×1
max ×1
oracle ×1
powershell ×1
python ×1
resize ×1
rows ×1
split ×1
string ×1
transitions ×1
username ×1
windows-ce ×1