小编Gra*_*ICA的帖子

理解字典,使用c#向字典添加新值

如果我的Customer对象具有Payment属性,它是自定义枚举类型和十进制值的字典

Customer.cs
public enum CustomerPayingMode
{
   CreditCard = 1,
   VirtualCoins = 2, 
   PayPal = 3
}
public Dictionary<CustomerPayingMode, decimal> Payment;
Run Code Online (Sandbox Code Playgroud)

在客户端代码中,我有向字典添加值的问题,尝试这样

Customer cust = new Customer();
cust.Payment = new Dictionary<CustomerPayingMode,decimal>()
                      .Add(CustomerPayingMode.CreditCard, 1M);
Run Code Online (Sandbox Code Playgroud)

c# dictionary initialization

4
推荐指数
1
解决办法
363
查看次数

带有 ctrl 键的 KeyPressEventArgs.KeyChar 的值

KeyPressEvent我知道如何当检测CTRL键被按下,但后来我想CTRL+ [什么?]。

使用CTRL+ AKeyChar= 1、CTRL+B给出 2 等。检测CTRL+a输入的最佳方法是什么?

这是我的代码:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (ModifierKeys.HasFlag(Keys.Control))
    {
        Console.Write("(Ctrl) ");
    }
    Console.WriteLine(Convert.ToString(Convert.ToInt32(e.KeyChar)));
}
Run Code Online (Sandbox Code Playgroud)

输入a, b, CTRL+ a, CTRL+b给出:

97
98
(Ctrl) 1
(Ctrl) 2
Run Code Online (Sandbox Code Playgroud)

c# keypress winforms

4
推荐指数
1
解决办法
4736
查看次数

'为'System.Windows.Baml2006.TypeConverterMarkupExtension'提供价值,引发了一个异常.行号'49'和行位置'38'

我正在制作我的第一个wpf应用程序,它现在只是实现了一个带有纹理的"地板",从上面看.在运行时我得到这个例外:

在System.Windows.Baml2006.TypeConverterMarkupExtension'上提供了一个异常'.行号'49'和行位置'38'

他们谈论的界限是

<ImageBrush ImageSource="/wood1_1000X1000.jpg" />.
Run Code Online (Sandbox Code Playgroud)

我也试过png扩展.图像的分辨率为1000 x 1000.

c# wpf

4
推荐指数
1
解决办法
1万
查看次数

为什么我的 IE11 F12 开发者工具无法“固定”?

当我使用 IE10 时,一切都很好。但是 IE11、固定按钮和“Ctrl+P”不起作用。我的系统是 Windows 7 Ultimate 64 位 SP1。

internet-explorer ie-developer-tools

4
推荐指数
1
解决办法
1048
查看次数

如何使用缺少元素的Linq进行排序?

通常在使用Linq时,我通常会使用Where或类似过滤掉空/空记录.但是,我需要在多个条件上订购一个列表,并按顺序保留列表中的所有项目.

以下内容仅.Dimension1.Count > 0适用于列表中的所有项目

var orderedList = mList.Elements
                       .OrderBy(x => x.Property1)
                       .ThenBy(x => x.Property2)
                       .ThenBy(x => x.Property3.Dimension1[0].Value2)
                       .ToList();
Run Code Online (Sandbox Code Playgroud)

如果有任何元素,Dimension1.Count == 0那么我得到错误:

'指数超出范围.必须是非负数且小于集合的大小.

这是预期的,因为数组没有标注尺寸.

当列表包含有哪些项目时,有没有办法使这项工作.Dimension1.Count = 0

请注意,这Dimension1[0].Value2是double类型.

c# linq

4
推荐指数
1
解决办法
366
查看次数

将过滤器应用于BindingSource,但它不起作用

我有一个TextBox,我在其中放了一个短语,它可以是任务的描述,也可以是任务的id.我想使用此TextBox中的文本过滤列表.但是当我将文本放入此TextBox时,过滤不起作用,并且DataGridView中的集合不会更改.

有什么不对?

public void BindData()
{
    var emptyBindingSource = new BindingSource();
    dataGridViewTaskList.AutoGenerateColumns = false;
    dataGridViewTaskList.DataSource = emptyBindingSource;

    var taskList = GetTasks();

    _bindingSource = new BindingSource();
    _bindingSource.DataSource=taskList.Response;

    dataGridViewTaskList.AutoGenerateColumns = false;

    dataGridViewTaskList.DataSource = _bindingSource.DataSource;

    if (dataGridViewTaskList.Columns["gridViewColumnId"] == null)
        dataGridViewTaskList.Columns.Add(new DataGridViewColumn() {Name = "gridViewColumnId"});
    else
        dataGridViewTaskList.Columns["gridViewColumnId"].DataPropertyName = "Id";

    if (dataGridViewTaskList.Columns["gridViewColumnDescription"] == null)
        dataGridViewTaskList.Columns.Add(new DataGridViewColumn() {Name = "gridViewColumnDescription"});
    else
        dataGridViewTaskList.Columns["gridViewColumnDescription"].DataPropertyName = "Description";
}

private void tbSearchedPhraseOrId_TextChanged(object sender, EventArgs e)
{
    _bindingSource.Filter = string.Format("Id = '{0}'", tbSearchedPhraseOrId.Text);
}
Run Code Online (Sandbox Code Playgroud)

我在BindData方法中添加了以下内容,它也不起作用:

_bindingSource.Filter = string.Format("Id LIKE '%{0}%'", "23"); …
Run Code Online (Sandbox Code Playgroud)

c# bindingsource .net-3.5 winforms

3
推荐指数
1
解决办法
2万
查看次数

GetChildAtPoint方法返回错误的控件

我的表单层次结构是这样的:

Form -> TableLayoutOne -> TableLayoutTwo -> Panel -> ListBox
Run Code Online (Sandbox Code Playgroud)

在ListBox的MouseMove事件中,我有这样的代码:

    Point cursosPosition2 = PointToClient(new Point(Cursor.Position.X, Cursor.Position.Y));
    Control crp = this.GetChildAtPoint(cursosPosition2);
    if (crp != null)
        MessageBox.Show(crp.Name);
Run Code Online (Sandbox Code Playgroud)

MessageBox向我显示"TableLayoutOne",但我希望它向我显示"ListBox".我的代码在哪里,我错了?谢谢.

c# cursor-position winforms

3
推荐指数
1
解决办法
4521
查看次数

自定义验证器不适用于文本框

我正在学习如何使用自定义验证器进行服务器端验证,但我似乎无法让它工作。每当我单击按钮时,文本框为空,错误消息就不会显示。我究竟做错了什么?

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

<asp:CustomValidator ID="CustomValidator1" ControlToValidate="TextBox1"
     OnServerValidate="CustomValidator1_ServerValidate" ValidationGroup="ValidateGp"
     ErrorMessage="This is a custom error validator" runat="server"/>

<asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="ValidateGp"/>

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
    if (args.Value.Equals(string.Empty))
    {
        args.IsValid = false;
    }
    else
    {
        args.IsValid = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net customvalidator server-side-validation

3
推荐指数
1
解决办法
3995
查看次数

调整DataGridView宽度以适合列

我有一个DataGridView以编程方式填充的.列设置为根据单元格内容自动调整大小.

DataGridView会提供关于液压和气动原理图部分的信息来填充.我的表单只有a SplitContainer,a PictureBox和the DataGridView.将SplitterDistance被链接到的宽度DataGridView.

DataGridView将仅具有最多6个列("索引","型号","序列号","图号","页号","修订号") ,并根据原理图要求至少2列的.所以我想相应地调整控件的大小.

如何让DataGridView控件调整为列的总宽度,以便滚动条不显示?

c# datagridview winforms

3
推荐指数
1
解决办法
1万
查看次数

3
推荐指数
1
解决办法
1082
查看次数