我在Visual Studio(C#)中创建了一个使用datagridview的应用程序.现在,当我分配该datagridview的DataSource时,它会自动选择第一行,并执行我的代码进行选择.由于我经常重新分配该数据源,因此这是不可取的.有没有办法改变它,所以它不会自动进行第一次选择,只依赖于用户的选择?
谢谢!
回应Darshan Joshi的评论:除了自动生成的代码之外,datagridview上唯一改变的是将AutoGenerateColumns设置为false,并设置DataSource属性.我在我的selectionchanged委托中放置了一个MessageBox.Show,它似乎甚至在每次设置数据源时都被调用三次.就在数据加载之前,两次之后.
我无法在加载时将selected设置为false,因为数据源是在某些用户操作之后设置的,而不是在初始化时设置的.
我们有一个软删除方案,我们只是将事物标记为已删除,然后在各个地方过滤掉已删除的内容.我正试图弄清楚如何从grapeoli自动完成建议中过滤掉已删除的那些.
键入检查的Object在那里类型检查编译时发生dynamic数据类型在运行时发生那么我们如何可以框一个动态值到对象?
dynamic dynamic = "This is dynamic data type";
Object obj = dynamic;
Console.WriteLine(obj);
Run Code Online (Sandbox Code Playgroud) 当我设置一个DataSource控件并想要使用.ToString()as时DisplayMember,我需要设置DisplayMember最后一个或ValueMember将覆盖它.
从ListControl继承的控件可以显示不同类型的对象.如果对象上不存在指定的属性或DisplayMember的值为空字符串(""),则显示对象的ToString方法的结果.
代码重现:
类:
class SomeClass
{
public string PartA { get; set; }
public string PartB { get; set; }
public string WrongPart { get { return "WRONG"; } }
public override string ToString()
{
return $"{PartA} - {PartB}";
}
}
Run Code Online (Sandbox Code Playgroud)
形成:
var testObj = new SomeClass() { PartA = "A", PartB = "B" };
comboBox1.DataSource = new [] { testObj };
comboBox1.DisplayMember = "";
comboBox1.ValueMember = "WrongPart"; …Run Code Online (Sandbox Code Playgroud) 我将焦点放在一个滚动条上vScrollBar.Select();
滚动条变得聚焦但它不会滚动鼠标滚轮.
仅当鼠标光标位于滚动条上时才会滚动.
如何在Select()之后滚动滚动条而不将光标放在滚动条上?
环境:Windows 10,Windows窗体,.NET 4.0
编辑
当我用笔记本电脑触摸板上的两个手指"滚动"时,我注意到滚动条正确滚动,但不是鼠标滚轮.问题可能是因为Windows 10鼠标/触摸板驱动程序?
如何更改文本框上的自动完成功能?我希望当我输入一个字符串时,该框会建议包含该字符串的项目,而不是以它开头。
我的代码是:
class MyClass
{
private AutoCompleteStringCollection autoCompleteList = new AutoCompleteStringCollection();
public MyClass()
{
InitializeComponent();
autoCompleteList.AddRange(ListNames.Select(x=>x.Name).ToArray());
textBoxName.AutoCompleteCustomSource = autoCompleteList;
textBoxName.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBoxName.AutoCompleteMode = AutoCompleteMode.Suggest;
textBoxName.KeyDown += TextBoxtextName_KeyDown;
}
private void TextBoxClient_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
{
this.Name = (sender as TextBox).Text;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是:
我有这个代码:
string first = "2-18;1-4; 5-212; 4-99" ;
Char delimiter = '-';
String pattern = @"\s?(\d+)([-])(\d+)";
Run Code Online (Sandbox Code Playgroud)
而且我想知道是否有任何方法可以将分隔符放在模式中而不是([-])?
在我的应用程序中,我有少量线程 (5) 不间断地执行以下方法:
private void ThreadMethod()
{
while(true)
{
if(CurrentItem != null)
{
HandleCurrentItem();
}
Thread.Sleep(200);
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这不是推荐的做法,但大多数争论是因为您没有响应能力,并且无法取消线程或时间不精确。这些对我来说都不是问题,但是我担心在此浪费太多 CPU 资源。从我在01:05:35看到的情况来看,当您调用 Sleep 方法时,处理器会得到充分利用。
我的问题:
在我的场景中这是一个不错的解决方案吗?如果没有的话,怎样才能做得更好呢?
注意:我使用的是.Net Framework 4.0
注 2:这些线程位于类的不同实例中,因此CurrentItem每个线程都有不同的对象。
我Keycloack在我的angularjs应用程序中使用它进行登录并且工作正常。
但是,在应用程序登录后,当用户尝试进行页面刷新 ( F5) 时,应用程序将注销并向用户显示登录页面。
有人可以告诉我这个问题的原因是什么吗?
我有一些List<Building> playersBuildings包含所有来自Bulilding类的对象的列表,我遇到了一些对我来说非常不直观的东西.
以下代码:
foreach (Factory f in playersBuildings) {
f.Update (deltaTime);
}
Run Code Online (Sandbox Code Playgroud)
试图施放的每个元素playersBuildings,以Factory与产生InvalidCastException的错误.虽然它有一定道理,但在编写代码时我希望foreach只会省略与指定类型不匹配的元素.
我首先想到的解决方案是:
foreach (Building f in playersBuildings) {
if ((f is Factory) == false)
continue;
(f as Factory).Update (deltaTime);
}
Run Code Online (Sandbox Code Playgroud)
但我不喜欢使用as关键字.每次我想在我的f下面做一些迭代时需要输入额外的+10个字符是令人沮丧的.
有没有更优雅的方法来跳过不匹配正确类型的元素?
c# ×7
winforms ×4
autocomplete ×2
.net ×1
.net-4.0 ×1
angularjs ×1
casting ×1
datagridview ×1
datasource ×1
django ×1
foreach ×1
keycloak ×1
python ×1
scrollbar ×1
sleep ×1
textbox ×1
windows-10 ×1
wpf ×1