设置ComboBox.Cursor不适用于默认/箭头游标

时间:2016-04-20 18:36:16

标签: c# winforms combobox

在C#的Windows窗体中,在设计器文件中,每个都可以正常工作:

this.someComboBox.Cursor = System.Windows.Forms.Cursors.AppStarting;
this.someComboBox.Cursor = System.Windows.Forms.Cursors.Cross;

这些不是:

this.someComboBox.Cursor = System.Windows.Forms.Cursors.Arrow;
this.someComboBox.Cursor = System.Windows.Forms.Cursors.Default;

即,当您尝试使用Cursors.ArrowCursors.Default时,如果您要将鼠标光标移动到ComboBox的文本部分上,而不是向右移动箭头,则光标将设置为Cursors.IBeam,而不是箭头。

为什么?你如何强迫它(正确地)使用箭头?

如果它只为Cursors.Default执行此操作,那么可能这只是意味着默认光标允许控件从一组不同的默认值中拉出来用于不同的情况。如果它对所有游标都这样做,那么看起来该属性的名称是误导性的,它应该真的被设置在其他地方。但它对前两个工作正常,而其他两个工作则失败。

如果它有帮助,这是设计器文件和主文件中能够重现此问题的那种代码:

// designer file:

this.someComboBox.Cursor = System.Windows.Forms.Cursors.Arrow;
this.someComboBox.FormattingEnabled = true;
this.someComboBox.Location = new System.Drawing.Point(130, 73);
this.someComboBox.Name = "someComboBox";
this.someComboBox.Size = new System.Drawing.Size(128, 21);
this.someComboBox.TabIndex = 2;
this.someComboBox.Click += new System.EventHandler(this.ComboBox_Click);
this.someComboBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(
        this.ComboBox_KeyPress);

//..........................................................................

// main file:

private void ComboBox_Click(object sender, System.EventArgs e)
{
    ((ComboBox)(sender)).DroppedDown = true;
}

private void ComboBox_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}

以及ComboBox的图形:

enter image description here

0 个答案:

没有答案