我有这个表格,我一直试图让它在设置为 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);
}
}
是否有另一种方法可以加载可以避免此渲染问题的组合框项目?