1

我有这个表格,我一直试图让它在设置为 150%(Windows 7)的显示设置上工作: 在此处输入图像描述

我发现当我注释掉“myTableAdapter.Fill();”时 它工作得很好。

private void Form_Load(object sender, EventArgs e)
    {
        //myTableAdapter.Fill(myDatabaseDataSet.myaccessdatabase);
    }

在此处输入图像描述

问题是我需要“myTableAdapter.Fill();” 加载以便能够获取将添加到组合框中的项目列表,但是当表格适配器加载时,事情有点失控(字体大小不同,位置不同)。 在此处输入图像描述

我知道这不是关于显示在屏幕左上角的组合框的已知问题,而是加载 datagridview 时发生的问题。仅当显示字体大小设置为 150% 时才会发生这种情况。

这是我的代码:

 private void Form_Load(object sender, EventArgs e)
    {
        myTableAdapter.Fill(myDatabaseDataSet.MyAccessDatabase);

        //fixes the bug that makes the dropdown menus to pop up in the left
        //corner of the screen. This sample if repeats for each 
        //individual combobox...

        var item1 = toolStripComboBox1;
        var createControl1 = item1.Control.Parent.GetType().GetMethod("CreateControl", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
        createControl1.Invoke(item1.Control.Parent, new object[] { true });

             //combobox menustrip code to populate the list of names
             //coming from the access database (in this case for        
             //Managers). It is the same code for "Buyer"; "XP" 
             //and "Aging"...
             for (int intCount = 0; intCount < myDatabaseDataSet.Tables[0].Rows.Count; intCount++)
        {
            var val = myDatabaseDataSet.Tables[0].Rows[intCount][0].ToString();
            if (!toolStripComboBox1.Items.Contains(val))
            {
                toolStripComboBox1.Items.Add(val);
            }
        }
  }

同样,当显示字体设置为任何其他百分比时,这不会发生。我的一个理论是这部分代码可能需要一些调整,所以它不会导致组合框变得疯狂:

for (int intCount = 0; intCount < myDatabaseDataSet.Tables[0].Rows.Count; intCount++)
        {
            var val = myDatabaseDataSet.Tables[0].Rows[intCount][0].ToString();
            if (!toolStripComboBox1.Items.Contains(val))
            {
                toolStripComboBox1.Items.Add(val);
            }
        }

是否有另一种方法可以加载可以避免此渲染问题的组合框项目?

4

0 回答 0