小编Mat*_*eid的帖子

c #databound ComboBox:InvalidArgument =值'1'对'SelectedIndex'无效

我在绑定的ComboBox(在Windows窗体上)上设置SelectedIndex时遇到问题,我在运行时添加到表单中,我怀疑有些奇怪的事情发生了.

当我尝试这个时,我得到错误"InvalidArgument ='1'的值对'SelectedIndex'无效."

private void Form1_Load(object sender, EventArgs e)
        {
            List<string> comboBoxList = new List<string>();
            comboBoxList.Add("Apples");
            comboBoxList.Add("Oranges");
            comboBoxList.Add("Pears");

            ComboBox comboBox1 = new ComboBox();
            comboBox1.DataSource = comboBoxList;
            comboBox1.SelectedIndex = 1;
            this.Controls.Add(comboBox1);
        }
Run Code Online (Sandbox Code Playgroud)

但是,如果我直接将项添加到ComboBox,则没有问题,如下所示:

comboBox1.Add("Apples");
Run Code Online (Sandbox Code Playgroud)

此外,如果我在设置SelectedIndex之前将控件添加到表单中也没有问题,如下所示:

ComboBox comboBox1 = new ComboBox();
this.Controls.Add(comboBox1);
comboBox1.DataSource = comboBoxList;
comboBox1.SelectedIndex = 1;
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么我不能从数据源设置选定的索引,直到控件添加到窗体后?

c# combobox winforms

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

在.NET 4中不使用TypedTableBase的类型化数据集

我正在将我们的DAL类库迁移到.NET 4(从.NET 3.5).我们经常使用类型化数据集,我们经常迭代表:

foreach(var row in ds.MyTable) var tmp = row.ID;
Run Code Online (Sandbox Code Playgroud)

这不再起作用,因为设计人员更改了数据集的代码,以便表格不再来自TypedTableBase<T>,而是来自DataTable(并实现非泛型IEnumerable).这就是差异所显示的.因此,该行在object编译时是类型的.

有人知道这是否是通常的行为?目前,我正在按照下面所示的方式进行,但我希望有一个更优雅的解决方案:

foreach(var row in ds.MyTable.Cast<MyDs.MyRow>()) var tmp = row.ID;
Run Code Online (Sandbox Code Playgroud)

c# .net-4.0 dataset strongly-typed-dataset

4
推荐指数
2
解决办法
3998
查看次数

BindingSource.Find抛出NotSupportedException(DataSource是BindingList <T>)

BindingSource有一个BindingList<Foo>附加的数据源.我想用合作BindingSourceFind方法来查找的元素.但是,NotSupportedException当我执行以下操作时会抛出a ,即使我的数据源确实实现了IBindingList(并且MSDN中没有记录此类异常):

int pos = bindingSource1.Find("Bar", 5);
Run Code Online (Sandbox Code Playgroud)

我在下面附上了一个简短的例子(a ListBox,a Button和a BindingSource).有人可以帮我Find调用吗?

public partial class Form1 : Form
{
    public Form1() { InitializeComponent(); }

    private void Form1_Load(object sender, EventArgs e)
    {
        var src = new BindingList<Foo>();
        for(int i = 0; i < 10; i++)
        {
            src.Add(new Foo(i));
        }

        bindingSource1.DataSource = src;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int pos = bindingSource1.Find("Bar", …
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding bindingsource winforms

4
推荐指数
2
解决办法
8601
查看次数

从UI调度任务的问题.继续任务

我的应用程序使用以下代码安排长时间运行的任务:

Task.Factory.StartNew<bool>((a) => WorkTask1(),
        TaskCreationOptions.LongRunning | TaskCreationOptions.AttachedToParent)
    .ContinueWith(antecedent => WorkCompletedTask1(antecedent.Result),
        TaskScheduler.FromCurrentSynchronizationContext());
Run Code Online (Sandbox Code Playgroud)

WorkCompletedTask1已计划并按预期在UI上显示结果.根据WorkTask1的结果,WorkCompletedTask1可以使用以下语句安排其他任务:

Task.Factory.StartNew<bool>((a) => WorkTask2(),
        TaskCreationOptions.LongRunning | TaskCreationOptions.AttachedToParent)
    .ContinueWith(antecedent => WorkCompletedTask2(antecedent.Result),
        TaskScheduler.FromCurrentSynchronizationContext());
Run Code Online (Sandbox Code Playgroud)

WorkTask2不会按预期在单独的线程上运行; 它运行在UI线程上,该线程被阻塞直到WorkTask2完成.我认为TaskCreationOptions.LongRunning将保证一个单独的线程.

为什么这不起作用的任何建议?我可以从UI和非UI任务安排添加任务,而不是从UI中的.continuewith任务安排.

破碎的示例项目代码

在窗体上带有button1按钮的空Windows窗体项目中,此代码无法按预期工作(Windows 7 VS2010 Express Net 4.0).T2和T3在UI线程中运行,而不是工作线程.将listBox1添加到button1表单并尝试以下操作:

private delegate void DelegateSendMsg(String msg);
private DelegateSendMsg m_DelegateSendMsg;
private TaskScheduler uiSched;
private Process thisProcess;
private string
    thisProcessName,
    thisProcessId,
    uiThreadName,
    nonuiStatus = "Non-UI",
    uiStatus = "UI";

private void Form1_Load(object sender, EventArgs e)
{
    thisProcess = Process.GetCurrentProcess();
    thisProcessName = thisProcess.ProcessName;
    thisProcessId = thisProcess.Id.ToString();
    uiThreadName = CurrentThread;
    m_DelegateSendMsg = …
Run Code Online (Sandbox Code Playgroud)

c# task

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

生成电子邮件验证链接

对于Web应用程序,我想生成一个电子邮件验证链接并将其发送给用户.与许多公共网站一样,用户应点击它来验证他的电子邮件地址.看起来类似于:

http://www.foo.bar/validation?code=421affe123j4h141k2l3bjkbf43134kjbfkl34bfk3b4fkjb43ffe

任何人都可以帮我提一些关于正确生成这些验证令牌的提示吗?谷歌搜索最佳实践证明比我更困难.链接应该:

  • ...不要求用户先登录.
  • ...不会显示任何登录凭据以保证应用程序的安全
  • ...允许我作为开发人员有效地验证令牌.我很确定我需要一种方法从代码中提取用户标识符以满足此条件.不是吗?

此外,你会找一个随机代码,保存在某个地方,还是生成的代码,我可以重新计算验证?

谢谢你的回复!

马蒂亚斯

PS我正在使用ASP.NET 3.5,以防有一个开箱即用的功能来执行此操作.

asp.net security email validation

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

bash 与带有命令行参数的 scala.sys.process.Process

我想从 Scala 生成一个进程(就此而言,SBT),以及作为参数传递的两个 SBT 命令。我制作了一个sbt.shshell脚本(sbt文档中手动安装的简化版本):

java -jar /home/bob/sbt/sbt/bin/sbt-launch.jar "$@"
Run Code Online (Sandbox Code Playgroud)

当我从 Ubuntu 中的 bash 提示符(/home/bob/workingdir作为工作目录)调用脚本时,如果工作正常:

~/sbt.sh "project Foo" "run"
Run Code Online (Sandbox Code Playgroud)

但是,我想使用以下代码在 Scala 程序中调用它:

val pseq = Seq("/home/bob/sbt.sh", "\"project Foo\"", "\"run\"")
val pb = scala.sys.process.Process(pseq, new java.io.File("/home/bob/workingdir"))
pb.!
Run Code Online (Sandbox Code Playgroud)

SBT 正常启动和加载,然后失败并显示以下错误输出:

[error] Expected key
[error] "project Foo"
[error] ^
Run Code Online (Sandbox Code Playgroud)

它在 Windows 8 上运行良好,但在 Ubuntu 12.10 上失败。我pseq曾经是一个String拥有完整 bash 命令的普通用户。我变成了 aSeq以便使参数明确分割(而不是在任何空格,即使在引号内)。

谁能指出这两个调用之间有什么区别,或者我还做错了什么?

ubuntu scala process sbt

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

如何在创建对象时在构造函数中自动分配变量

假设我们只有一个带有int ID的简单对象Person来识别它.如何为Person的每个新实例提供新的ID值(+1),但是在该类Person的构造函数中?(我没有使用DB)

java

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

JavaFX 2 TreeItem 中节点的模型标识符

有没有办法在 JavaFX 2 中存储模型对象的标识符或模型对象本身TreeItem<String>?只是Value为了存储文本...

我正在TreeView从模型对象列表中填充 a ,并且需要在用户单击节点时找到它。我已经习惯了工作,ValueText在.NET Windows窗体或HTML和我恐怕无法适应思维的JavaFX这样...

javafx-2

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

Java,尝试...在init或run中捕获

当我添加一个抛出异常来运行或初始化时,我有一个错误,上面写着:

ray.java:115: error run() in xray cannot implement run() in Runnable

public void run() throws Exception(

          ^ 

overriden method does not throw Exception 

1 error
Run Code Online (Sandbox Code Playgroud)

我需要尝试{..} catch来获取URL工作.try {...} catch需要抛出异常的作品.

java url

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