2013-11-20 166 views
0

这是Windows窗体应用程序C# - 让4个单选按钮更改按钮位置点击

该应用程序是这样的:

RADIO1 text = 1 
RADIO2 text = 2 
RADIO3 text = 3 
RADIO4 text = 3 

当我按下命名为button1按钮,这将是什么随机像这样:

RADIO2 text = 2 
RADIO1 text = 1 
RADIO4 text = 4 
RADIO3 text = 3 

我试过这样的事情:

List<string> list = new List<string>{"1","2","3","4"}; 

public void ShuffleText() 
{ 
    var rand = new Random(); 
    var shuffledText = list.OrderBy(x=>rand.Next(list.Count)).ToList(); 
    var radioButtons = new[]{radioButton1,radioButton2, radioButton3, radioButton4}; 

    for(int i = 0; i < radioButtons.Length;i++) 
    { 
    radioButtons[i].Text = shuffledText[i]; 
    } 
} 

但是,正如你所看到的,这只是慢腾腾的单选按钮的文字,我不希望按钮来改变,因为它是一个测验,我创造的,我不想让例子回答无线电按钮的顶部。

回答

1

也许你应该看起来更到您的组件的位置,而不是只是文本属性

编辑的;

List<string> list = new List<string>{"1","2","3","4"}; 
List<int> Locations new List<int>{100,200,300,400}; 
var r1 = new RadioButton(); 
var r2 = new Radiobutton(); 
var r3 = new RadioButton(); 
var r4 = new RadioButton(); 

var buttons = new[]{r1,r2,r3,r4}; 

var rand = new Random(); 
var shuffledText = list.OrderBy(x=>rand.Next(list.Count)).ToList(); 
var ShuffledButtons = Locations.OrderBy(x=> rand.Next(locations.Count)).ToList(); 

for(int i = 0; i < radioButtons.Length;i++) 
{ 
    radioButtons[i].Text = shuffledText[i]; 
    radioButtons[i].Location.Y = shuffledButtons[i]; 
    radioButtons[i].Location.X = 50; 
} 

EDIT2: 上面的代码将随机双方你单选按钮为您的文本。

  • RB1 = 1
  • RB3 = 2
  • RB2 = 4
  • RB4 = 3
0

可以在按钮的点击创建动态单选按钮,并动态地在母控制添加控制。

您还可以将表格布局控制放在单选按钮上方,并根据随机生成的数字更改单元格位置。

0

你可以做这样的事情:

List<Point> list = new List<Point>{radioButton1.Location,radioButton2.Location,radioButton3.Location,radioButton4.Location}; 
// Rest of the code remains the same 
var shuffledLocation = list.OrderBy(x=>rand.Next(list.Count)).ToList(); 
for(int i = 0; i < radioButtons.Length;i++) 
    radioButtons[i].Location= shuffledLocation[i];