小编Pat*_*ick的帖子

C#DataGridView AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells

我在DataGridView中显示一个最多100,000行的表.该表有一列包含大字符串.我发现该设置AutosizeModeAllCells导致应用程序长时间冻结,同时计算所需的宽度.作为妥协,我将自动调整大小模式设置为DisplayedCells.然后我将一个方法绑定到dataGrid的scroll事件:

public void MethodThatBindsDataToTheDatagridview(DataTable table)
{
   dataGrid.Source = table;
   dataGrid.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
   dataGrid.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
}

public void DataGridScroll(object sender, ScrollEventArgs e)
{
   ((DataGridView)sender).Update();
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过同样的Refresh方法.我的期望是DataGrid将根据显示的行设置列宽.但是,这只在加载表时发生一次,但滚动事件不会触发列宽的更改.

datagridview autosize winforms

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

如何在 Laravel 中通过 toArray / toDatabase 函数指定通知属性?

Laravel 的通知允许notifications使用toArray或将数据保存在表中toDatabase。但文档没有澄清两件事。

  1. 在表中存储数据时toArray()和时有什么区别?toDatabase()notifications

  2. 我在表中添加了一个附加属性 ( link) notifications,但是当我这样做时:

    public function toDatabase() {
        return [
            'data'=>'My Data',
            'link'=>'My Link'
        ];
    }
    
    Run Code Online (Sandbox Code Playgroud)

我最终在属性下序列化了数组datatoArray()使用or函数保存属性的正确方法是什么toDatabase()

notifications laravel eloquent laravel-5 laravel-5.3

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

将静态类型对象扩展为动态对象

dynamic在视图模型中使用对象,因为我发现使用 Automapper 之类的东西不必要的开销,并且发现这种方法更加灵活和轻量级。我正在使用来自即兴界面的构建器,如下所示:

private dynamic New = Builder.New();

private dynamic GetViewModel(Product p)
{
    var viewModel = New.Product( id : p.Id, name : p.Name );
    viewModel.AdditionalProperty = "some additional data";
    return viewModel;
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,“扩展”实际对象会比逐一重新映射所有属性更好,类似于在 JavaScript 中使用jQuery.extend()

private dynamic GetViewModel(Product p)
{
    var viewModel = //create base dynamic object, that has all the members of p.
    viewModel.AdditionalProperty = "some additional data";
    return viewModel;
}
Run Code Online (Sandbox Code Playgroud)

这应该可以通过ExpandoObject结合反射和迭代所有成员来实现,但我想知道是否有更干净/更整洁的解决方案。

c# dynamic impromptu-interface

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

动态实例化对象Objective-C

在Java中,我们可以像这样动态地实例化一个对象(只知道参数类型):

Class<?> msgClass = Class.forName(className);
constructor = msgClass.getConstructor(String.class, String.class, String.class);    
MyClass myClass = (MyClass) constructor.newInstance(myString, myString2, myString3);    

    public class MyClass {        
        public MyClass(String s, String s2, String s2){}
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法在objective-c中做同样的事情,只知道要传递给objective-c类构造函数的参数类型.

提前致谢.

dynamic object objective-c instantiation

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

添加静态方法以便于清洁单元测试 - 良好实践?

说我有这个班:

class MyClass {
    private String s;
    // more attributes here
    public MyClass(String s, /*more constructor params*/)  {...}

    public String myMethod(String s) {
        //complex logic here
    }
}
Run Code Online (Sandbox Code Playgroud)

要进行单元测试,myMethod()我需要创建整个对象(需要构造许多参数等),而方法只使用s.

Altenatelly我可以添加一个静态方法:

class MyClass {
    private String s;
    // more attributes here
    public MyClass(String s, /*more constructor params*/)  {...}

    public String myMethod(String s) {
        return myStaticMethod(s);
    }

    public static myStaticMethod(String s) {
        //complex logic here
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我可以轻松测试"复杂逻辑"而无需创建对象. someStaticMethod(String s)应该对班级没有副作用.所以我添加了一个额外的方法只是为了方便测试.这是一个好习惯吗?

java unit-testing scala

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

如何使用protobuf在C#中序列化一个文件中的多个对象

我有这个类Person,我想要它的几个实例,我想在一个文件中序列化它们.我该怎么做?我不能创建一个列表Person然后序列化它.我希望可以反序列化一个保存的类实例(例如保存的第四个实例).我该怎么做?

人员类:

[ProtoContract]
class Person
{
    public Person()
    { }
    [ProtoMember(1)]
    public int a;
    public Person(int d)
    {
        a = d;
    }
}
Run Code Online (Sandbox Code Playgroud)

序列化的方法:

public void serialize()
    { 
        Person p1 = new Person(1);
        Person p2 = new Person(2);
        Person p3 = new Person(3);
        Person p4 = new Person(4);
        Person p5 = new Person(5);
        FileStream file = File.Create("person.bin") ;
        Serializer.Serialize(file, p1);
        Serializer.Serialize(file, p2);
        Serializer.Serialize(file, p3);
        Serializer.Serialize(file, p4);
        Serializer.Serialize(file, p5);
        file.Close();
    }
Run Code Online (Sandbox Code Playgroud)

反序列化的方法:

public void deserialize()
    {
        Person …
Run Code Online (Sandbox Code Playgroud)

c# serialization protocol-buffers

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

C# 以恒定时间覆盖文本文件的前几行

我有一个文本文件:

FIRST LINE
SECOND LINE
THIRD LINE
...
Run Code Online (Sandbox Code Playgroud)

我想覆盖文件的第一行,例如。使用"2345" StreamWriter,我只能将文件覆盖为:

2345
Run Code Online (Sandbox Code Playgroud)

using (StreamWriter newWriter = new StreamWriter(playingFileDirectory, false)){ 
    newWriter.WriteLine("2345");
}
Run Code Online (Sandbox Code Playgroud)

或者

FIRST LINE
SECOND LINE
THIRD LINE
...
2345
Run Code Online (Sandbox Code Playgroud)

using (StreamWriter newWriter = new StreamWriter(playingFileDirectory, true)){ 
    newWriter.WriteLine("2345");
}
Run Code Online (Sandbox Code Playgroud)

然而我想要的结果是:

2345
SECOND LINE
THIRD LINE
...
Run Code Online (Sandbox Code Playgroud)

有没有快速的方法(线性时间)来做到这一点?我有一些文本需要在用户按下按钮时更新。数据库记录包含 100,000 行。我只想像在文本编辑器中一样更改第一行,但不想更改第一行并重写整个文件。

c# text-files

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

使用Java中的泛型解组XML

我有一些POJO包用于unmarhsalling.我想创建一个通用的方法,你可以传递你将无法解决的类.

例如:

public class Test<E>
{
    E obj;

    // Get all the tags/values from the XML
    public void unmarshalXML(String xmlString) {
        //SomeClass someClass;
        JAXBContext jaxbContext;
        Unmarshaller unmarshaller;
        StringReader reader;

        try {
            jaxbContext = JAXBContext.newInstance(E.class);    // This line doesn't work
            unmarshaller = jaxbContext.createUnmarshaller();

            reader = new StringReader(xmlString);
            obj = (E) unmarshaller.unmarshal(reader);

        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在上面的代码中指出的行上得到一个错误:Illegal class literal for the type parameter E.E当然,它将来自实际存在的POJO列表.

我怎么做到这一点?

java xml generics unmarshalling

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

删除对象后触发QTimer :: SingleShot

// Example class
class A : public QObject
{
   Q_OBJECT
   void fun() {
       Timer::SingleShot(10, timerSlot); //rough code
   }
   public slot:
   void timerSlot();
}

auto a = SharedPointer<A>(new A);
a->fun();
a->reset(); // a deleted
Run Code Online (Sandbox Code Playgroud)

在这种情况下删除a并触发计时器后,它会执行timerSlot()吗?我得到了一次非常罕见的崩溃,并且不确定是不是因为这个逻辑中有些可疑.

c++ qt qeventloop qt5 qtimer

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

如何将函数应用于列表中的列表

我有一个列表和一个功能:

t = [3, [1], [2, [1], [1]]]

f = lambda x: x**2
Run Code Online (Sandbox Code Playgroud)

我想要这样的结果:

[9, [1], [4, [1], [1]]]
Run Code Online (Sandbox Code Playgroud)

我试图使用地图功能,但似乎没有用

我这样做时出现类型错误:

list(map(f, t))
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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