小编Kin*_*ing的帖子

任何用于处理Excel(*.xls和*.xlsx)文件的开源/免费库?

我知道一些用于处理Excel文件的开源库,但它们仅用于*.xls或*.xlsx,例如NPOI用于*.xls,EPPlus和ClosedXML用于*.xlsx.由于性能问题,我不想使用Microsoft Excel Automation.你可以建议我使用一些开源或免费的图书馆满足这个目的(处理*.xls和*.xlsx).

c# export-to-excel

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

由于DataGridViewImageColumn,DataGridView在默认错误对话框中抛出异常

我这样说是因为在网上找到答案花了太长时间,这可能是一个常见问题 - 这是我第二次在我的应用程序上体验过它.

当具有DataGridViewImageCell的新行变得可见,并且它没有设置默认值时,我的DataGridView将抛出以下异常:

DataGridView中发生以下异常:

System.ArgumentException:参数无效.在System.Drawing.Image.FromStream(Stream stream,Boolean useEmbeddedColorManagement,Boolean validateImageData)"

在我的设置中,我在Visual Studio Designer中创建DataGridViewImageColumns,然后通过设置DataGridViewImageColumns的DataPropertyName属性以匹配Type:byte []的DataColumns,将这些列绑定到DataTable中的DataColumns.

但是,当新行中的DataGridViewImageColumn变为可见时,它仍会抛出此异常.

有两种解决方法对我有用:

  1. 取消选中Designer中的"启用添加"选项 - 然后以编程方式添加行 - 使用按钮等 - 我认为这是我第一次做的.
  2. 处理DataGridView的DataError事件,如下所示:

        private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
        {
            if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == DBNull.Value)
            {
                e.Cancel = true;
            }
        }
    
    Run Code Online (Sandbox Code Playgroud)

这是我现在要选择的选项,但我不是压制Exceptions的粉丝,我可以看到由于Handler的throw + Catch而导致DataGridView行的创建延迟.

MSDN(http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewimagecolumn.aspx)表示您可以处理RowsAdded事件并强制使用空值.我试过这个:

    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        foreach (DataGridViewCell cell in dataGridView1.Rows[e.RowIndex].Cells)
        {
            if (cell.GetType() == typeof(DataGridViewImageCell))
            {
                cell.Value = DBNull.Value;
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

......哪些不起作用.

另一个选项涉及将Column CellTemplate设置为从DataGridViewImageColumn派生的Type,其默认值为null或DBNull.Value.

现在已经有点晚了 - 我整天都在这里.

我可能会选择我的选项2,但任何人都可以告诉我如何让选项3/4工作?对此有最佳方法吗?

.net c# datagridview winforms

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

CASE WHEN NULL在SQLite中产生错误结果?

我有一个带有图像类型列的表,该表有一些行但是所有行还没有任何图像,它们都是空的.为了测试CASE WHEN NULL,我试过这个并且它给出了一个奇怪的结果:

SELECT CASE myImageColumn WHEN NULL THEN 0 ELSE 1 END FROM myTable
Run Code Online (Sandbox Code Playgroud)

所有返回的行都在1的列中(我认为是0).这有什么不对?

非常感谢您的帮助!

谢谢!

sql database sqlite null

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

如何使用c#注册三键组合的热键

我使用下面的代码完成了两个组合键的全局热键.如何对三个键组合进行相同的操作,如(ctrl + shift + esc)(ctrl + shift + tab)??

两个组合键的代码:

   var TabShift = Keys.Tab | Keys.Shift;
   RegisterGlobalHotKey(TabShift, USE_ALT);


    DllImport("user32.dll")]


     private static extern int RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);

    [DllImport("user32.dll")]
    private static extern int UnregisterHotKey(IntPtr hwnd, int id);


    private void RegisterGlobalHotKey(Keys hotkey, int modifiers)
    {
        try
        {
            // increment the hot key value - we are just identifying
            // them with a sequential number since we have multiples
            mHotKeyId++;

            if (mHotKeyId > 0)
            {
                // register the hot …
Run Code Online (Sandbox Code Playgroud)

c# winapi

7
推荐指数
1
解决办法
4633
查看次数

winforms中的双向数据绑定,在基类中实现的Inotifypropertychanged

我使用.Net 3.5,Winforms,Databinding

我有派生类,基类实现了IPropertychanged

    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(string propertyName) {
        var handler = this.PropertyChanged;
        if (handler != null) {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
Run Code Online (Sandbox Code Playgroud)

每个propertysetter调用:

    protected void SetField<T>(ref T field, T value, string propertyName) {
        if (!EqualityComparer<T>.Default.Equals(field, value)) {
            field = value;
            IsDirty = true;
            this.RaisePropertyChanged(propertyName);
        }
    }
Run Code Online (Sandbox Code Playgroud)

典型的Propertysetter:

    public String LocalizationItemId {
        get {
            return _localizationItemId;
        }
        set {
             SetField(ref _localizationItemId, value, "LocalizationItemId");
        }
    }
Run Code Online (Sandbox Code Playgroud)

属性绑定到文本框的方式

        private DerivedEntity derivedEntity
        TextBoxDerivedEntity.DataBindings.Add("Text", derivedEntity, "Probenname");
Run Code Online (Sandbox Code Playgroud)

如果我以编程方式将文本分配给文本框,则文本框不会显示它.但我可以手动编辑文本框.

c# data-binding winforms

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

在什么情况下我不应该在类中使用静态成员?

我不得不问这个问题,因为我觉得只有经验丰富的程序员才能知道类中静态成员的优缺点。我读过解释静态成员的书籍,根据我的观点,我也在我的项目中使用了许多静态成员。

据我了解,如果有某个类在我的项目中只使用了1次,我的意思是不需要创建一些或许多实例,我应该将其所有成员设为静态,尤其是静态方法。这是真的?这还有另一个好处,因为可以轻松调用静态成员,而无需创建新实例或在类之间传递实例。

在我的项目中使用静态成员并没有告诉我它有什么问题,我的项目似乎运行正常,当然我并不是说我喜欢使用静态成员并随机、频繁地使用它(正如我在上面解释我的观点)。我认为静态成员可能有一些优点和缺点(我不知道),我想从您的经验中了解。请与我分享。
谢谢你!

.net c# static

6
推荐指数
1
解决办法
1933
查看次数

根据日期时间过滤大型列表

我有以下Items类:

public class Item
{
   public Item()
   {
   }

   public string Id {get; set;}
   public string Name {get; set;}
   public string Price {get; set;}
   public DateTime CreatedDate {get; set;}

}
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中我List<Item> items包含A LOT了类型的项目Item,我的问题是你推荐的最佳方法/做法,根据CreatedDate对列表中的项目进行排序/过滤以用于以下场景:

  • CreatedDate在日期x之前的所有项目
  • 日期x之后CreatedDate的所有项目
  • CreatedDate在日期x和日期y之间的所有项目

PS如果我还要提及时间呢?喜欢之前/之后/之间的日期x时间y?

c# linq datetime

6
推荐指数
1
解决办法
8266
查看次数

如何使用linq到object过滤2个列表来创建列表

我想知道是否有一种方法可以使用Linq来反对从过滤2个其他列表中获取列表.我有两个对象A和B的列表,它们通过一个属性(代码:字符串)相互关联.B有另一个属性,Name:String.

我想获得满足2个条件的A对象列表.

- 所有A对象必须将其A.Code属性与B列表中的任何B.Code属性相匹配.

-B.Name必须是="yoda";

我试过这个代码(和另一个例子),但它似乎工作,我不知道为什么.我刚开始使用linQ.

List<A> FilteredAList = (from OneA in ListOfA
                         join  OneB in ListOfB
                         on OneA.Code equals OneB.Code
                         where OneB.Name == "yoda"
                         select  OneA).ToList<A>();
Run Code Online (Sandbox Code Playgroud)

提前致谢!.

c# linq linq-to-objects

5
推荐指数
1
解决办法
1508
查看次数

DataGridView数据源未更新

我正在使用Winforms DevExpress,我正在将DataTable绑定到DataGridView,它正常工作.我遇到的问题是我有一些函数将构建一个新的DataTable对象,该对象与原始文件分开,需要替换绑定到DataGridView的原始DataTable.

DataTable originalTable = new DataTable("OriginalTable");

//Populate originalTable 

myDataGridControl.DataSource = originalTable;
Run Code Online (Sandbox Code Playgroud)

使用上面的代码一切正常,但下面的代码创建一个新的DataTable,需要设置为myDataGridControl的DataSource.

DataTable newTable = new DataTable("NewTable");

//Populate newTable

//Set newTable as the DataSource for myDataGridControl
myDataGridControl.DataSource = newTable;
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的尝试来调用RefreshDataSource(),Refresh(),将DataSource设置为null.我还没有让它工作.我该怎么做呢?

c# data-binding datatable devexpress winforms

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

带旋转文本的垂直导航

我正在尝试实现一个垂直导航菜单,其中包含链接,我已使用css3将链接文本旋转到270度.我已经旋转了它,因为我希望文本自下而上.问题是,当我添加填充顶部时,它的间距会变得不一致.你可以在这里看到我的代码.我无法理解所采取的不同空间.我也尝试给李一个高度,但它没有用.如果有人可以帮助我,请 这是我的代码:

HTML:

<div class="main-nav">
      <ul class="nav">
        <li><a href="#">HOME</a></li>
        <li><a href="#">METHODOLGY</a></li>
        <li><a href="#">PORTFOLIO</a></li>
        <li><a href="#">SERVICES</a></li>
        <li><a href="#">TEAM</a></li>
        <li><a href="#">CONTACT</a></li>
      </ul>
 </div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.rotate{
    -webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform:rotate(270deg);writing-mode:lr-tb}
html, body {
  min-height:100%;
  max-height:100%;
  height:100%;
  font-family:Oswald, sans-serif, Arial;
  font-size:14px;
  background:#fff
}
a {
  text-decoration:none
}
li {
  list-style:none
}
ul {
  padding:0;
  margin:0
}
.main-nav {
  width:45px;
  float:left;
  height:100%;
  position:fixed;
  background:#4c4c4c
}
ul.nav {
  width:21px;
  margin:0 auto
}
ul.nav li:first-child {
  padding-top:35px
}
ul.nav li {
  padding-top:124px
}
ul.nav li a …
Run Code Online (Sandbox Code Playgroud)

css navigation vertical-alignment css3 navigationbar

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